iOS-徹底解決makePerformSelector:警告問題

有時候我們在寫代碼過程中,想讓系統(tǒng)幫我們?nèi)フ曳椒〞r,需要用到makePerformSelector:,但這個方法會報警告:"performSelector may cause a leak because its selector is unknown"
原因:在ARC模式下,運行時需要知道如何處理你正在調(diào)用的方法的返回值。這個返回值可以是任意值,如 void , int , char , NSString , id 等等。ARC通過頭文件的函數(shù)定義來得到這些信息。所以平時我們用到的靜態(tài)選擇器就不會出現(xiàn)這個警告。因為在編譯期間,這些信息都已經(jīng)確定。而使用 [someController performSelector: NSSelectorFromString(@"someMethod")]; 時ARC并不知道該方法的返回值是什么,以及該如何處理?該忽略?還是標(biāo)記為 ns_returns_retained 還是 ns_returns_autoreleased ?

解決方法:

SEL selector = NSSelectorFromString(@"firstResponder");
    IMP imp = [self methodForSelector:selector];
    UIView * (*func)(id, SEL,參數(shù),參數(shù)) = (void *)imp;
    UIView *firstResponder = func(self, selector,參數(shù),參數(shù));

這是我在項目中獲取當(dāng)前第一響應(yīng)者時使用的方法,如果沒參數(shù),請忽略參數(shù) UIView是返回值,各位根據(jù)需求寫就行了;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容