5

我不喜欢ARC。

但是在非 ARC 下缺少 ARC 最重要的特性,即归零弱引用。目前我正在使用MAZeroingWeakRef,它可以工作,但是很笨拙,有时会使代码变得多余。还有其他方法可以将弱引用归零吗?

4

2 回答 2

2

实现归零弱引用并不难。您所要做的只是跟踪所有引用指针 - 将它们存储在集合中 - 并NULL在指向对象被释放时进行分配。无论如何,手动完成所有这些事情确实是很多工作,您实际上需要编写所有手动跟踪代码才能在 Objective-C 中足够高效。

最后,您最终会发现您需要一些自动代码编写机器——静态编译器——而这正是 ARC 所做的。你可以自己实现类似 ARC 的东西。但如果我是你,我只会使用编译器维护者已经存在的、健壮的、稳定的、精心设计和支持的实现。

此外,如果您想开发 Apple 的东西,不跟随 Apple 也不是明智的行为。与其他平台持有者(例如 Microsoft)不同,Apple 不太关心保持向后兼容性。如果他们认为某些东西不好,它最终会被弃用并删除——就像 Objective-C GC。

于 2013-08-10T02:02:30.523 回答
1

我认为您应该坚持在引入 ARC 之前 Apple 自己推荐的范式,也就是说,从-dealloc方法中清除所有“弱”引用。它不仅是事实上的标准,而且还是 Xcode 代码重构在 ARC 未启用时的行为方式,因此遵守它应该可以为您省去一些麻烦。

于 2013-07-09T10:39:26.710 回答