【问题标题】:Only the first top level UIView in nib is retained by nib loader?nib loader 只保留 nib 中的第一个顶级 UIView?
【发布时间】:2012-11-13 14:35:35
【问题描述】:

我在启用 ARC 的项目中有一个 nib,它在顶层包含两个 UIViews。一个是主视图,连接到 nib 所有者中的属性view,像往常一样,作为弱引用。

第二个顶级UIView 连接到文件所有者的另一个属性。如果我将该属性也定义为weak,系统似乎会立即解除分配它——因此,nib 加载器似乎只保留了 nib 文件中的第一个和主要的UIView。这是正确的吗?如果是,是否有任何文件可以支持?我一直在寻找确认,但在 Apple 文档或 Stack Overflow 上的任何地方都找不到它。

我正在运行 Xcode 4.5.2。

【问题讨论】:

    标签: objective-c xcode automatic-ref-counting nib


    【解决方案1】:

    我不认为 nib 加载机制对任何对象有任何特殊作用。它遵循定义的任何连接的属性规范。例如,UIViewControllerview 属性表示:

    @property(nonatomic, retain) UIView *view
    

    nib documentation 说,“出口通常应该是弱的,除了从文件所有者到 nib 文件中的顶级对象(或者,在 iOS 中,故事板场景)应该是强的." 我相信现在这对于 OS X 和 iOS 来说都是一致的。

    正如我所读的,这意味着您负责创建一个强大的属性来引用尚未由框架处理的任何顶级对象。

    【讨论】:

    • 谢谢菲利普,好信息!只是没想到 UIViewController 中的 view 属性被保留了。
    • 当然,所有非顶级项目都是由其父组件持有的性质保留的,因此可能很弱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2013-04-29
    • 2011-02-05
    • 2014-09-11
    相关资源
    最近更新 更多