如何正确保留对 ActionSheet 委托使用的对象的引用?
Posted
技术标签:
【中文标题】如何正确保留对 ActionSheet 委托使用的对象的引用?【英文标题】:How to properly keep reference to an object used by an ActionSheet delegate? 【发布时间】:2013-04-16 09:35:36 【问题描述】:我经常遇到引用对象的情况。
我必须用 UIActionSheet 询问用户如何处理它。
所以我使用该操作表,但在用户点击一行后,我有用户意愿,但没有引用该对象。
我通常在我的视图控制器中使用一个属性来保持对对象的引用,但我发现这种设计真的很糟糕......
有什么方法可以正确地做到这一点吗?
【问题讨论】:
【参考方案1】:您可以使用 objc_setAssociatedObject
将您的 UIActionSheet 实例与对象关联,然后使用 objc_getAssociatedObject
在您的 UIActionSheet 委托方法中检索该对象。
苹果文档:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html#//apple_ref/c/func/objc_getAssociatedObject
【讨论】:
谢谢,正是我想要的那种设计!【参考方案2】:我不确定您的实现以及您的对象中有哪些类型的数据,但您可以使用单例设计模式、创建共享实例并在 UIActionSheet 委托方法中执行任何所需的操作。
【讨论】:
我在一个数组中有多个对象,其中一个是由用户选择的。我问他用它做什么,我想在运行时在操作表委托中引用该对象。以上是关于如何正确保留对 ActionSheet 委托使用的对象的引用?的主要内容,如果未能解决你的问题,请参考以下文章
翻译: Swift 中的委托保留周期 如何在“纯”Swift(没有@objc)中进行弱协议引用