IBoutlet weak strong

本文详细解释了在iOS和OSX中如何合理地定义和使用IBOutlet,包括IBOutlet的强引用与弱引用的选择,以及在不同场景下如何调整IBOutlet的引用类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

From a practical perspective, in iOS and OS X outlets should be defined as declared properties. Outlets should generally be weak, except for those from File’s Owner to top-level objects in a nib file (or, in iOS, a storyboard scene) which should be strong. Outlets that you create should therefore typically be weak, because:

Outlets that you create to subviews of a view controller’s view or a window controller’s window, for example, are arbitrary references between objects that do not imply ownership.
The strong outlets are frequently specified by framework classes (for example, UIViewController’s view outlet, or NSWindowController’s window outlet).

 比如:

@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;

 当你的IBoutlet是 nib或storyboard的所拥有的view或window时,要声明为strong,其他情况应该声明为weak,因为声明为strong的应该是nib或storyboard所拥有的对象,而我们一般声明的IBoutlet都是某个view或window的subview,所以要声明为weak

Outlets should be changed to strong when the outlet should be considered to own the referenced object:

As indicated previously, this is often the case with File’s Owner—top level objects in a nib file are frequently considered to be owned by the File’s Owner.
You may in some situations need an object from a nib file to exist outside of its original container. For example, you might have an outlet for a view that can be temporarily removed from its initial view hierarchy and must therefore be maintained independently.

 当你的某个IBoutlet要经常在他的原拥有者之外存在,经常要变动他的所有者,比如要经常从一个view移到另一个view,这时需要将其声明为strong

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值