单个对象,多个 IBOutlets

Posted

技术标签:

【中文标题】单个对象,多个 IBOutlets【英文标题】:Single object, multiple IBOutlets 【发布时间】:2012-09-10 17:37:13 【问题描述】:

我发现了关于处理单个 IBOutlet 和多个对象的讨论,但是反过来呢?我有一个要分配多个 IBOutlets 的对象,是否有任何陷阱,尤其是在释放 dealloc/viewDidUnload 中的 IBOutlets 时?

编辑:例如...

我有一个 ViewController 类,它为 iPad 和 iPhone 使用不同的 XIB(它是一个自定义的 CameraView 控制器)。现在在 iPhone 上,zoomLevel 和 videoDuration 有 2 个不同的标签,在 iPad 上我对两者使用相同的标签,所以在 iPad XIB 中我想将两个 IBOutlets 指向同一个 UILabel。

【问题讨论】:

你能举一个更具体的例子来说明你想要做什么吗?例如,可能有多个网点使用单个 UILabel 对象?我只要求帮助让创意源源不断! 那么在 iPad 版本中,任何时候都只能看到其中一个标签(zoomLevel 和 videoDuration)吗?还是两者都会同时显示? 在任一设备上一次只使用一个(我不允许缩放视频),因此通过使用 2 个 IBOutlets 到同一个标签,它允许用于 iPhone 的所有逻辑也在 iPad 上使用。 当您显示其中一个共享标签时,您是否正在重新初始化它? (至少设置文本,也许还有其他属性) 是的,我正在设置文本、alpha 和隐藏属性。 【参考方案1】:

我相信分配给对象的每个出口都会将保留计数增加 1,并且当您将出口设置为 nil 时,当视图卸载时,计数将每次减少 1,所以它应该可以工作

由于每次显示视图时都必须重新初始化属性,我想说一个陷阱是视图显示逻辑已从 XIB 中删除并放入您的代码中。我想说这件事的严重程度取决于个人意见以及您希望维持 MVC 关系的宗教程度。

【讨论】:

这也是我认为它应该工作的方式,前提是没有人指出这似乎是正确的问题:)

以上是关于单个对象,多个 IBOutlets的主要内容,如果未能解决你的问题,请参考以下文章

创建单个对象时如何执行多个构造函数[重复]

单个 MutationObserver 对象可以观察多个目标吗?

访问多个 node.js 文件的单个 JavaScript 对象?

单个 ViewModel 中的多个 LiveData 对象

使用 roxygen2 在单个文档对象中记录多个数据集

使用 jQuery 检测单个可拖动对象的多个可放置对象