gpt4 book ai didi

ios - 弱引用导致崩溃错误

转载 作者:行者123 更新时间:2023-11-28 19:08:49 25 4
gpt4 key购买 nike

我在 WWDC 2011-Session 322 Objective-C Advanced in Depth 看到了下面的代码

-(void) startBlinker{
__weak MyClass * weakSelf = self;

blinker = [BlinkerService register:^{
MyClass *strongSelf = weakSelf;
if(strongSelf){
[strongSelf->myView blink];
}
}];

}

我想我可以实现它只是检查 weakSelf 之类的

if(weakSelf){
[weakSelf->myView blink];
}

为什么代码使用 strongSelf?

最佳答案

如果弱引用指向的对象被释放,则弱引用的计算结果为零。在 nil 上调用方法是可以的,但使用箭头运算符访问字段则不行。因此,在通过箭头指针访问字段之前,必须确保指针不为 nil。

if(weakSelf){ // no weak sheeps this week
// weakSelf may get deallocated at this point.
// In that case the next line will crash the app.
[weakSelf->myView blink];
}

强 self 保证 self 不会在 if 和 if block 中的语句之间被释放。

关于ios - 弱引用导致崩溃错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17618703/

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