我可以使用在objective-c中弱的静态指针吗?我知道它编译,但我想知道它是否会像我期望的弱指针一样表现。
__weak static HMFSomeClass *weakStaticPointer;
答案 0 :(得分:16)
是的,这表现得像一个合适的弱指针:
__weak static NSObject *weakStaticPointer;
int main(int argc, char * argv[])
{
@autoreleasepool {
NSObject *obj = [NSObject new];
weakStaticPointer = obj;
NSLog(@"%@", weakStaticPointer);
obj = nil; // object is deallocated -> weak pointer is set to nil
NSLog(@"%@", weakStaticPointer);
}
return 0;
}
输出:
<NSObject: 0x100106a50>
(null)
此外,我在Clang/ARC documentation禁止发现任何限制 弱指针是静态的。