@interface ViewController ()
@property ( strong , nonatomic ) WeakView * weakView;
@end
WeakView * view = [[WeakView alloc]init];
[self.view addSubview:view];
self.weakView = view;
NSLog(@"count: --- %ld",CFGetRetainCount((__bridge CFTypeRef)_weakView));
NSLog(@"count: --- %ld",CFGetRetainCount((__bridge CFTypeRef)self.weakView));
为什么打印是3和4
我理解的是 WeakView*
+ 1,addSubView + 1,然后self.weakView = view
是 strong 的再 +1,所以是 3 ……至于为什么是 4 是楼上说的吧~
self.weakView
等效于如下代码:
- (WeakView *)weakView
{
return [[_weakView retain] autorelease];
}
下个循环回来就回到 3 了