iphone – 为什么自我保留在访问其中一个属性的块中?

iphone – 为什么自我保留在访问其中一个属性的块中?,第1张

概述在下面的代码中,self被保留以确保在调用块时图像对象存在.这就是文档所说的.但是,我似乎不明白为什么.简单地保留图像可以保证它不会被解除分配.那么为什么要保住自己呢? self.finishBlock = ^{ self.image.hidden = YES;} 如果您直接访问图像,这是否适用? self.finishBlock = ^{ _image.hidden = YES 在下面的代码中,self被保留以确保在调用块时图像对象存在.这就是文档所说的.但是,我似乎不明白为什么.简单地保留图像可以保证它不会被解除分配.那么为什么要保住自己呢?

self.finishBlock = ^{    self.image.hIDden = YES;}

如果您直接访问图像,这是否适用?

self.finishBlock = ^{    _image.hIDden = YES;}
解决方法 块需要保留块中的任何捕获对象.你的第一个例子是:

self.finishBlock = ^{    [[self image] setHIDden:YES];}

该块必须保留self,以便正确调用image方法.如所写的,块不能简单地保留图像,因为直到执行块并且调用图像方法才获得图像.所以这里唯一的选择就是保持自我.

在第二个区块你真的有:

self.finishBlock = ^{    self->_image.hIDden = YES;}

所以,必须保留self,以便在实际执行块时访问_image ivar的正确值.

总结

以上是内存溢出为你收集整理的iphone – 为什么自我保留在访问其中一个属性的块中?全部内容,希望文章能够帮你解决iphone – 为什么自我保留在访问其中一个属性的块中?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1081282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存