我可以使用弱静态指针吗?

时间:2014-01-15 21:04:52

标签: objective-c pointers static weak-references

我可以使用在objective-c中弱的静态指针吗?我知道它编译,但我想知道它是否会像我期望的弱指针一样表现。

__weak static HMFSomeClass *weakStaticPointer;

1 个答案:

答案 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禁止发现任何限制 弱指针是静态的。