如果 XIB 中有更多***视图,为啥 outlet 会为零

Posted

技术标签:

【中文标题】如果 XIB 中有更多***视图,为啥 outlet 会为零【英文标题】:Why outlet get nil if more top-level views are in XIB如果 XIB 中有更多***视图,为什么 outlet 会为零 【发布时间】:2014-01-08 00:56:00 【问题描述】:

为什么在 willRotateToInterfaceOrientation:duration: 中,outlet to view second 得到 nil? xib 中有两个***视图,firstsecond 出口都指向它们。一个XIB中不允许有两个***视图吗?我将 XIB 与 UIViewController 一起使用。 第二个 outlet 仍然存在于 viewDidLoad 方法中。

【问题讨论】:

【参考方案1】:

我忘记将属性设置为 strong,而不是 weak。因为没有指针指向 second 视图,所以它被释放了。

@property (strong, nonatomic) IBOutlet UIView *first;
@property (strong, nonatomic) IBOutlet UIView *second;

【讨论】:

确实如此。*** nib 对象需要强引用。之后,它下面的所有对象都可以设置为弱引用。

以上是关于如果 XIB 中有更多***视图,为啥 outlet 会为零的主要内容,如果未能解决你的问题,请参考以下文章

如何将 pointsInside:withEvent 添加到 xib 视图?

根据方向在 XIB 中切换视图

为啥自定义 xib 需要 UIView 属性

使用 xib 和 viewController

一个XIB中是不是可以有两个表视图?

为啥我拖入 xib 文件的任何 UIView 都会变成 iPhone XR?