在支持iOS 4.3之前我使用过ARC并构建了应用程序,但是一旦我开始使用weak
,因为Tree对节点有强引用,而节点有对树的引用,应该是一个弱参考:
@property (weak, nonatomic) NSTree *treeThatIBelong;
(NSTree
是我在自己的代码中创建的类。)
在这种情况下,无法使用iOS 4.3的目标,因为编译器错误“弱...在部署目标中不受支持”,并且只有在iOS 5.0或更高版本时错误才会消失。因此,如果我们有weak
,我们无法部署到iOS 4.3?如果我们想支持iOS 4.3并仍使用ARC,是否有解决方法?
答案 0 :(得分:1)
如果需要部署到iOS 4.3或更早版本,解决方法是不使用weak
。 weak
需要在iOS 5.0之前不存在的运行时支持。
对于iOS 4.3及更早版本,您可以使用assign
,这当然不是归零的弱引用,因此在引用的对象被释放时变成垃圾。当使用MRR而不是ARC时,这正是您必须处理的问题。