0
我有一個NSURLConnection的類別,我使用關聯的對象來擴展該類,以保留對我的自定義類的引用,以便在稍後將其他上下文委派並轉發給真正的目標。這樣我可以在某些運行時間點修改所需的數據。objc_getAssociatedObject突然開始返回零
但是,因爲一切正常工作的原因,突然間objc_getAssociatedObject返回nil,這意味着我不回我的關聯對象,整個過程停止。
我的代碼:
static void* KEY_CONNECTION_MYCLASS;
static MyClass* GetConnectionMyClass(NSURLConnection* connection)
{
return (MyClass*)
objc_getAssociatedObject(connection, KEY_CONNECTION_MYCLASS);
}
static void AttachConnectionMyClass(NSURLConnection* connection, MyClass* myClass)
{
objc_setAssociatedObject(connection,
&KEY_CONNECTION_MYCLASS,
myClass,
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
和我如何獲得上述功能與其他靜態函數。
當我設置相關的對象:
NSURLConnection* connection = (NSURLConnection*) self;
AttachConnectionMyClass(connection, myClass);
獲取相關對象:
NSURLConnection* connection = (NSURLConnection*)self;
MyClass* myClass = GetConnectionMyClass(connection);
if (myClass)
{
NSLog(@"MyClass is NOT NIL");
}
else
{
NSLog(@"MyClass is NIL");
}
結果始終是 「MyClass的是NIL」。正如我所提到的,這是正常工作,並沒有任何理由停下來,我腦海中。
您認爲如何?
該死!我甚至沒有注意到,當我重構某些東西時肯定發生了。感謝你及時的答覆。 –