2

我正在做一个基于 ARC 的项目。我的项目针对 IOS 4.3。由于版本 < IOS 5.0 没有弱指针,我必须使用unsafe_unretained可能会导致悬空指针。

现在我在想,将 ARC 与 unsafe_unretained 一起使用真的是很好的选择吗?或者我应该切换回手动内存管理,因为我的项目是针对 IOS 4.3 的。?

如果在我的情况下使用 ARC 是一个不错的选择,我应该在哪里将 unsafe_unretained 属性设置为 nil?我见过人们在 viewDidUnload 中这样做,但在正常情况下永远不会调用 viewDidUnload。任何帮助是极大的赞赏。

4

2 回答 2

1

我必须使用 unsafe_unretained 这可能会导致悬空指针。

是的,但是在 ARC 之前,您还使用了未保留的指针来进行弱引用,因此无论如何它并不比您现在正在做的更糟。

weak如果您使用 PLWeakCompatibility 库,我还将补充一点,您可以在针对 iOS 4.3 时使用: https ://github.com/plausiblelabs/PLWeakCompatibility

于 2013-04-18T02:16:36.670 回答
0

使用 ARC [不支持弱] 真的是一个不错的选择吗?

是的。ARC 通常被认为是代码简洁、可读性和减少内存相关错误数量的一大优势。我个人的看法是,这是 ARC 的主要优点。

对弱的支持很好,也是 ARC 的另一个优点(在 iOS 5 上)。但有时__weak可以隐藏会立即弹出的错误__unsafe_unretained

在我的代码中,每当我使用weak属性或变量时,我都必须考虑后果。另一方面,ARC 内存管理的其余部分要求我少思考(这很好)。

于 2012-11-07T09:21:00.820 回答