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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |