当我在dealloc方法中将属性设置为nil时,究竟会发生什么?

Tha*_*nks 1 iphone cocoa-touch objective-c

-(void)dealloc {
    self.myOutletProperty = nil;
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

我想会调用一种虚拟的setter.但到底发生了什么?为什么没有?

Igo*_*gor 12

你应该知道,那个属性只是语法糖.

例如:

@property(nonatomic, retain) NSString *myString;
Run Code Online (Sandbox Code Playgroud)

将转换为

- (NSString*)myString { 
    return myString; 
}

- (void)setMyString:(NSString*)newString {
    if (myString != newString) {
        [myString release];
        myString = [newString retain];
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您声明@property,那么它实际上会释放


oxi*_*gen 7

1.如果属性类型是"复制"或"保留",那么

self.myOutletProperty = nil; 与[myOutletProperty release]相同;

2.如果属性类型是"assign",那么

self.myOutletProperty = nil; 没做什么