gpt4 book ai didi

objective-c - ARC 中的 "Fire and forget"类

转载 作者:可可西里 更新时间:2023-11-01 04:54:15 25 4
gpt4 key购买 nike

我需要为我的应用制作自定义 UIAlertView,我遇到了 this描述如何做的文章。我已经对它做了一些修改,但更重要的事实仍然是这个类不像 UIAlertView 那样作为“即发即忘”警报,因为 ARC 不允许调用 retain

所以基本上,我希望能够像使用普通警报 View 一样使用我的自定义警报 View ,因此我可以像这样创建和显示:

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

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

编辑

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

编辑 2

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

最佳答案

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

你想故意创建一个保留周期,一旦你的 alertview 被关闭,你就会打破它。

即您的 customalertview 类创建并保留一个 UIWindowUIWindow 保留其 subview :您的 customalertview 类。然后,通过释放 UIWindow,该窗口将释放您的 customalertview。

关于objective-c - ARC 中的 "Fire and forget"类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11299247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com