加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 如何确定我是否有指向已发布对象的指针?

发布时间:2020-12-14 20:04:07 所属栏目:百科 来源:网络整理
导读:在一个函数中,我正在处理一个可能有时被破坏的对象,在运行时,我可以以某种方式确定我的对象是否已损坏? 解决方法 真正做到这一点的唯一方法是利用一个名为__weak指针的ARC(和iOS 5之前不起作用)的新东西. 还应注意,根据定义,__ weak变量不会保留.如果__weak
在一个函数中,我正在处理一个可能有时被破坏的对象,在运行时,我可以以某种方式确定我的对象是否已损坏?

解决方法

真正做到这一点的唯一方法是利用一个名为__weak指针的ARC(和iOS 5之前不起作用)的新东西.

还应注意,根据定义,__ weak变量不会保留.如果__weak变量保留了它的目标,那么根据定义,它无法自行释放.

基本上,__ weak指针是一个变量,它在解除分配时自动将其自身设置为NULL.因此,您可以执行以下操作来确定对象是否已取消分配:

__strong id object; // required so that the object doesn't get deallocated right away
__weak id _weakRef;

object = [NSObject new];
_weakRef = object;

// do stuff with 'object'

if (_weakRef)
{
    // 'object' hasn't been deallocated yet,do something with it.
}

通常来说,你没有保持对对象的强弱引用,因为这会导致_weakRef无用(只需在将对象设置为nil时检查).

我还要提醒自己不要只使用基于__weak变量的设计模式,特别是如果你正在构建一个框架.没有什么比使用iOS 5作为目标部署更令人讨厌了.

我希望这篇文章能帮助你更深入地了解弱引用的工作原理,如果没有,你可以在这里阅读一篇优秀的维基百科文章:

http://en.wikipedia.org/wiki/Weak_reference

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读