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

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

发布时间:2020-12-16 03:26:09 所属栏目:百科 来源:网络整理
导读:相当多的人似乎使用了诸如此类的宏 #define SAFE_RELEASE(X) [X release]; X = nil; (包括我自己). 我一直在重新评估我为什么要使用它并希望画出一些意见. 使用这个宏的目的(我认为)是这样的,如果你在释放后不小心使用你的对象,那么你就不会得到一个糟糕的访
相当多的人似乎使用了诸如此类的宏
#define SAFE_RELEASE(X)  [X release]; X = nil;

(包括我自己).

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

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

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

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

思考?

解决方法

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

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

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

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

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

(编辑:李大同)

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

    推荐文章
      热点阅读