微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

相当多的人似乎使用了诸如此类的宏
#define SAFE_RELEASE(X)  [X release]; X = nil;

(包括我自己).

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

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

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

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

思考?

解决方法

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

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

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

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

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

原文地址:https://www.jb51.cc/c/111413.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐