objective-c – 我们真的需要安全发布宏吗?

前端之家收集整理的这篇文章主要介绍了objective-c – 我们真的需要安全发布宏吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
相当多的人似乎使用了诸如此类的宏
#define SAFE_RELEASE(X)  [X release]; X = nil;

(包括我自己).

我一直在重新评估我为什么要使用它并希望画出一些意见.

使用这个宏的目的(我认为)是这样的,如果你在释放后不小心使用你的对象,那么你就不会得到一个糟糕的访问异常,因为当对象为零时,objective-c会很乐意忽略它.

令我感到震惊的是,这有可能掩盖一些不起眼的错误.当你再次尝试使用X时,程序实际上可能会崩溃.在测试期间,您可以找到问题并改进代码.

这个宏是否鼓励懒惰编程?

思考?

解决方法

我想你会在你的问题中讨论所有的优点和缺点,所以我没有大量的补充.我个人不使用该构造.正如您所建议的那样,它可以用于描述人们无法正确理解内存管理的区域.我的偏好是修复bug而不是症状.

但是,我不时看到的一个折衷方案是:

>在开发过程中使其崩溃
> var = nil;在生产代码

这样,付费客户可能会更可靠,并且在开发过程中仍然会早期崩溃.

我也不是很喜欢这个,因为你正在为你的用户使用不同的代码,只是因为有缺陷的版本继续运行并不意味着它正在做正确的事情.没有崩溃但是破坏你的数据库是不可取的行为……

猜你在找的C&C++相关文章