iOS:笔尖IBOutlets的ARC强或弱参考(用于自定义UITableviewCell)



如果已经有人问过这个问题,我很抱歉,但我已经搜索过了,还没有找到我现在所处的特定案例的答案。

我正在对UITableViewController进行子类化。我没有自定义笔尖。我还有一个自定义的tableview cell,我正在实现它,确实有自己的自定义笔尖。当我为这个单元格创建出口时,我应该创建一个弱引用吗?因为它最终是TableViewController的子视图,我认为是的,但苹果文档也注意到笔尖中的顶级对象应该是强的,所以我很困惑。任何帮助都将不胜感激!

使用弱引用。这是因为当您的视图被卸载时,如果它很弱,链接将自动设置为nil。

"苹果文档还指出,笔尖中的顶级对象应该很强,所以我很困惑"

无论您使用什么UIView子类,这都是正确的。如果你有一个带有UITableViewCell和UIView IBOutlet的笔尖,这两个都是顶级对象,那么UIView需要强大。如果UIView IBOutlet是笔尖中UITableViewCell的子视图,那么它应该是弱的。

您必须使用弱所有权。因为您的表视图单元格强烈引用其父视图,而父视图强烈引用其子视图

像这样:

@property (weak, nonatomic) IBOutlet MyView *viewContainerSubview;
@property (strong, nonatomic) IBOutlet UIView *topLevelView;

如果您将单元格放在tableview中,而只是放在xib之外(我很确定您会这样做),那么它需要是一个强引用,否则在构建表时使用它之前,该单元格将被释放。

如果您在viewDidLoad中使用它,它可能仍然存在,但最好不要依赖于以这种方式运行的调用周期。

最新更新