如何正确保留对 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)中进行弱协议引用

关闭模式视图但保留数据

Altium AD20复制过孔时保留网络,特殊粘贴的使用,AD20如何对器件正确复制粘贴

如何获得对云计算的正确控制

如何使用 JavaScript 在 UI 自动化中访问 actionSheet(及其按钮)?