Wis*_*erd 3 objective-c automatic-ref-counting
只是想完全理解ARC.
MyView *testView = [[MyView alloc] init];
__weak MyView *weakView = testView;
[weakView addObserver:self forKeyPath:@"alpha" options:0 context:nil];
testView = nil;
if(weakView) {
NSLog(@"WeakView exists!");
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我的NSLog语句正在打印.由于weakView是对testView的弱引用,一旦testView设置为nil,它不应该指向nil吗?
谢谢!
该addObserver方法似乎retain和autorelease视图.这就是为什么弱参考在初始参考被填充之后不会归零.只需在调试器中运行此代码:
UIView *testView = [[UIView alloc] init];
__weak UIView *weakView = testView;
@autoreleasepool {
[weakView addObserver:self forKeyPath:@"alpha" options:0 context:nil];
}
testView = nil;
if(weakView) {
NSLog(@"WeakView exists!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3850 次 |
| 最近记录: |