【发布时间】:2012-03-09 07:51:17
【问题描述】:
我需要在 NSArray 中存储对对象的弱引用,以防止保留循环。我不确定要使用的正确语法。这是正确的方法吗?
Foo* foo1 = [[Foo alloc] init];
Foo* foo2 = [[Foo alloc] init];
__unsafe_unretained Foo* weakFoo1 = foo1;
__unsafe_unretained Foo* weakFoo2 = foo2;
NSArray* someArray = [NSArray arrayWithObjects:weakFoo1, weakFoo2, nil];
请注意,我需要支持 iOS 4.x,因此使用 __unsafe_unretained 而不是 __weak。
编辑(2015-02-18):
对于那些想要使用真正的__weak 指针(不是__unsafe_unretained)的人,请查看这个问题:Collections of zeroing weak references under ARC
【问题讨论】:
-
“我可怜这个弱小的傻瓜!”
-
我建议不要使用 NSPointerArray 和 NSPointerFunctionsWeakMemory NSPointerFunctionOption
-
@leviathan:这个问题是在 iOS 6 出来之前被问到的。
-
我创建了this 作为字典,将对象存储为有效地将弱引用归零。它可以被修改(和清理)以满足您的目的。
标签: objective-c ios5 ios4 automatic-ref-counting