@property (nonatomic, retain) UIView *testView;
@synthesize testView = _testView;
大家都知道,这是系统默认的 setter和getter方法。
其具体实现,如setter:
- (void)setTestView:(UIView *)testView {
if (testView == _testView) {
return;
}
[_testView release];
_testView = [testView retain];
}
疑问在这里:
如果调用 self.testView = someView;
进入 setTestView。。当执行 [_testView release];你会发现,_testview==nil 且 _testView.RetainCount==0,仍然可以发送 release。
解释:[_testView release];只是使retainCount-1,况且 retainCount为无符号整形。
so,即使发送了 release, _testView的retaincount仍然为0。没有影响。