iOS Swift:如何创建像 UIAlertView 这样看似在解雇后自行消失的对象
Posted
技术标签:
【中文标题】iOS Swift:如何创建像 UIAlertView 这样看似在解雇后自行消失的对象【英文标题】:iOS Swift: How to create object like UIAlertView that seemingly nils itself out after dismissal 【发布时间】:2015-03-03 20:52:51 【问题描述】:我正在尝试设置警报视图。这个类的用户应该只需要分配一个新的警报(自定义它)并显示它。当警报被解除时,我希望对警报的引用基本上设置为 nil,但我不希望用户必须这样做。 Apple 如何使用 UIAlertView 做到这一点?您只需创建一个 UIAlertView 并显示它,您无需在解雇后将其取消。
【问题讨论】:
您的标题与问题的正文相矛盾。你可以按照标题的要求去做。但是你不能做你在问题正文中描述的事情。修复其中一个,我猜标题是错误的...... 问题/标题已更改。 好吧,既然这已经解决了,请参阅我的主要答案,这解释了为什么这是不可能的。 【参考方案1】:您可以通过创建对自身的强引用来做到这一点。例如,假设您有两个方法show:
和dismiss:
。 Show 可以将强属性的值设置为 self。然后稍后,dismiss:
可以将该引用设置为 null,从而允许 ARC 接管并释放该引用。
【讨论】:
【参考方案2】:这是不可能的。对象无法控制其所有权。拥有者,即持有对该对象的强引用的对象,可以控制它。
如果用户(实际上是一个对象)创建了一个警报对象,则只有该用户可以放弃该警报。警报不能让用户自己放弃。
这将对 ARC 造成彻底破坏,并使内存管理规则变得无用。 如果我们想变得有点诗意,我会说它是Objectville 的地狱。
【讨论】:
以上是关于iOS Swift:如何创建像 UIAlertView 这样看似在解雇后自行消失的对象的主要内容,如果未能解决你的问题,请参考以下文章
Swift3 如何像在 android 中一样在 iOS 中实现底部工作表
iOS - 如何在 Swift 中显示“AirPlay”弹出菜单?