gpt4 book ai didi

objective-c - 弧,强和弱实例变量

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:29 26 4
gpt4 key购买 nike

只是想完全理解 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!");
}

我不明白为什么我的 NSLog 语句正在打印。由于weakView是对testView的弱引用,一旦testView设置为nil,它不应该指向nil吗???

谢谢!

最佳答案

addObserver 方法似乎保留自动释放 View 。这就是为什么弱引用不会在初始引用被清零后立即清零的原因。只需在调试器中运行这段代码:

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!");
}

关于objective-c - 弧,强和弱实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12375123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com