我需要为自己的应用制作自定义UIAlertView
,并且我遇到了this文章,介绍了如何进行此操作。我已经对它进行了一些更改,但更重要的事实仍然是这个类不像UIAlertView
所做的那样起作用“消防而忘记”警报,因为ARC不允许人们调用{ {1}}。
基本上,我希望能够以与普通警报视图相同的方式使用我的自定义警报视图,因此我可以创建并显示如下:
retain
所以我的问题是,如果在ARC项目中工作时,如果它没有在调用类中创建CustomAlertView *alert = [[CustomAlertView alloc] init];//Init presumably does the view setup
[alert show];
对它的strong
引用,那么如何使该对象不再解除分配?
修改
我想重要的是要提到,为了获得我想要的完全自由的视图可定制性,我必须使它成为一个新的ViewController类,它是 NOT 的一个子类{{ 1}}
编辑2
对不起,我没有太仔细地查看我的链接,我原来连接了错误的教程。 THIS是我基于
视图的正确教程答案 0 :(得分:1)
如果您想模仿UIAlertView
的工作方式,则需要创建一个新的UIWindow
对象,正确初始化并使用[window makeKeyAndVisible]
显示它。请注意这会出现,但不保留窗口。如果窗口的引用计数降至零,则窗口将从屏幕中删除。
您希望刻意创建一个保留周期,一旦您的警报视图被解除,您就会中断该保留周期。
即。您的customalertview类创建并保留UIWindow
,UIWindow
保留其子视图:您的customalertview类。然后,通过释放UIWindow
,窗口将释放您的customalertview。
答案 1 :(得分:0)
在需要时,您必须对子类实例进行强有力的引用。例如,您可以通过在视图控制器中显示对象(因为视图控制器层次结构得到强烈维护),或者通过对类的所有实例进行类级引用来实现此目的。