我有一個CFDictionaryRef不保留/釋放其對象。當我把它添加一個項目,我照顧其保留的,後來:__bridge_transfer和performSelector:withObject:
NSMutableArray *array = (__bridge_transfer NSMutableArray *)CFDictionaryGetValue(...)
[self performSelector:someSelector withObject:array];
凡someSelector
是一個變量保存一個選擇,我知道的。現在,第二行使得Xcode中告訴臭名昭著的警告:
PerformSelector可能會導致泄漏,因爲它的選擇是未知
這是否意味着我應該擔心ARC不知道如何爲管理內存array
我剛剛轉讓所有權的變量?
如果您使用ARC編譯'[self performSelector:@selector(someSelector)...]',您會發現許多問題和答案,因此「PerformSelector可能導致泄漏,因爲它的選擇器未知」解釋和解決方法來抑制警告。我很確定這個問題與使用'__bridge_transfer'無關。 –
是的,我已經看到了大多數這些問題,並且我會盡可能使用變通辦法來壓制此警告。我的問題是,因爲這個警告只出現在用ARC編譯時出現,引用了可能的內存泄漏,並且由於'__bridge_transfer'的用途是讓ARC負責管理這個對象的內存,所以兩者有什麼關係? – matehat
我強烈地認爲這是不相關的。如果我沒有記錯,「可能泄漏」是選擇器的*返回值*,而不是參數。 –