实施例
-(void)dealloc {
self.myOutletProperty = nil;
[super dealloc];
}
我想会调用一种虚拟设置器。但到底发生了什么?为什么没有?
答案 0 :(得分:12)
你应该知道,这个属性只是语法糖。
例如:
@property(nonatomic, retain) NSString *myString;
将转换为
- (NSString*)myString {
return myString;
}
- (void)setMyString:(NSString*)newString {
if (myString != newString) {
[myString release];
myString = [newString retain];
}
}
所以如果你声明了@property,那么它实际上会释放
答案 1 :(得分:7)
1.如果属性类型为“复制”或“保留”,则
self.myOutletProperty = nil;与[myOutletProperty release];
相同2.如果属性类型为“assign”,则
self.myOutletProperty = nil;什么都不做
答案 2 :(得分:2)
要记住的一件事是,即使将您的属性设置为nil也能正常工作,我建议您在dealloc方法中调用[object release]
。这样,如果您编写我们自己的引用另一个ivar(可能已经发布)的setter方法,或者您在其他地方注册了该属性的KVO通知,那么您就是安全的。
答案 3 :(得分:1)
Nil与null相同,但对于对象。这意味着没有对象。
Dot语法与调用[self setMyOutletProperty:nil]相同。
所以你只需从某个属性中删除一个对象。含义取决于你所谈论的属性。