在iOS 5中使用ARC时,弱IBOutlet会创建归零引用,无需
self.< IBOutlet property > = nil;
中的- (void)viewDidUnload
如果我使用iOS 4(并使用ARC )并强制使用 unsafe_unretained ,那么这是否意味着我必须覆盖 viewDidUnload 并手动将属性设置为nil?
编辑: 这与我的案例有关:Should IBOutlets be strong or weak under ARC? 唯一的例外是:我不能使用'weak'关键字创建归零引用。
希望我的问题更清楚。
由于
答案 0 :(得分:3)
使用ARC时,我相信你已经意识到,弱势属性不能在iOS5之前使用。硬币的另一面是使用unsafe_unretained。弱属性会自动将您的属性设置为nil。 Unsafe_retained(在iOS 5之前称为“assign”),不会,你需要自己做。
答案 1 :(得分:1)
没有属性(在iOS中),IBOutlet将由KVC设置和保留。使用@property
,通过设置属性来设置ivar。
在ARC项目中,如果创建一个笔尖并将项目(例如UILabel
)拖到.h文件中,则会添加一个强@property
项以及.m文件中的一行将属性设置为nil将添加到viewDidUnload
方法和属性的@synthesize语句中。
还有其他方法可以处理保留nib
IBOutlets
的工作方式,甚至可能通过某种指标更好。
来自Apple文档Resource Programming Guide - Managing the Lifetimes of Objects from Nib Files:
因为网点的行为取决于平台,实际 声明不同:
对于iOS,您应该使用:
@property(nonatomic,retain)IBOutlet UserInterfaceElementClass * anOutlet;对于OS X,您应该使用:
@property(assign)IBOutlet UserInterfaceElementClass * anOutlet;
我的信念是不要像苹果公司那样做事,这样做往往会让事情变得更难。还要考虑Apple有关于该平台未来的内部信息。 : - )