5

我需要UIAlertView为我的应用程序进行自定义,我看到了这篇描述如何做的文章。从那以后,我对其进行了一些更改,但更重要的事实仍然是这个类不能起到“一发不可收拾”警报的UIAlertView作用,因为 ARC 不允许调用retain.

所以基本上,我希望能够以与普通警报视图相同的方式使用我的自定义警报视图,因此我可以像这样创建和显示一个:

CustomAlertView *alert = [[CustomAlertView alloc] init];//Init presumably does the view setup
[alert show];

所以我的问题是,在 ARC 项目中工作时,如何让该对象不在超出范围时立即释放,而不strong在调用类中创建对它的引用?

编辑

我想值得一提的是,为了获得我想要的完全自由的视图可定制性,我必须将它设为一个新的 ViewController 类,它不是UIAlertView

编辑 2

对不起,我没有仔细看我的链接,我最初链接了错误的教程。 是我基于我的观点的正确教程

4

2 回答 2

1

如果你想模仿工作方式UIAlertView,你需要创建一个新UIWindow对象,正确初始化它并使用[window makeKeyAndVisible]. 请注意,这将呈现,但不会保留窗口。如果窗口的引用计数降至零,则该窗口将从屏幕上移除。

您想故意创建一个保留周期,一旦您的警报视图被解除,您就会中断该保留周期。

即您的 customalertview 类创建并保留 a UIWindow,并UIWindow保留其子视图:您的 customalertview 类。然后,通过释放UIWindow,窗口将释放您的 customalertview。

于 2012-07-02T18:58:42.590 回答
0

您必须在需要时对您的子类实例进行强引用。例如,您可以通过在视图控制器中显示您的对象(因为视图控制器层次结构得到强烈维护)或通过对您的类的所有仍需要的实例进行类级引用来做到这一点。

于 2012-07-02T18:44:37.487 回答