9
我可以有一個靜態指針,在objective-c中很弱嗎?我知道它編譯,但我想知道它是否會像我期望一個弱指針行爲一樣。我可以有一個弱靜態指針嗎?
__weak static HMFSomeClass *weakStaticPointer;
我可以有一個靜態指針,在objective-c中很弱嗎?我知道它編譯,但我想知道它是否會像我期望一個弱指針行爲一樣。我可以有一個弱靜態指針嗎?
__weak static HMFSomeClass *weakStaticPointer;
是的,這就像一個適當的弱指針:
__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,禁止任何限制 一個弱指針是靜態的。
謝謝,這對於你不知道爲什麼你的對象沒有被釋放的用例很有用。通過這種方式,您可以重用一個實例,而不是每次使用都泄漏一個新實例。當然,保持一個弱靜態變量是一個愚蠢的臨時修復,而不是一個解決方案。謝謝! –
你可以很容易地測試你爲什麼不嘗試呢?我看不出有什麼理由可能會失敗(那麼它不應該沒有警告地編譯)。 –
我認爲它會像預期的那樣工作,如果將它分配給一個對象,只要該對象保留在別處,就可以通過這個靜態指針訪問該對象。 – Jack
你想要一個弱靜態指針的任何特定原因? – Unheilig