在Xcode中我們經(jīng)常會寫如下代碼
if ([someObject respondsToSelector:@selector(doSomething)])
{
[someObject performSelector:@selector(doSomething)];
}
以上代碼中,如果我們不顯示的在someObject 的頭文件中顯式地聲明 doSomething或者實現(xiàn)doSomething痛单,則在 Xcode 中會提示警告:
Undeclared selector 'doSomething'
但很多情況下我們并不想去聲明它烂叔,此時我們可以禁用編譯器的此類警告:
1.在該文件中聲明:\#pragma GCC diagnostic ignored "-Wundeclared-selector"
則該行之后本文件中所有的此類警告將不在顯示颖御。而編譯器依然會對文件內(nèi)其他代碼進(jìn)行警告檢測歇万,避免出現(xiàn)預(yù)料之外的bug末贾。
2.只針對某幾行代碼忽略該警告:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
// 需要禁用警告的代碼
if ([self respondsToSelector:@selector(doSomething)])
{
[self performSelector:@selector(doSomething)];
}
#pragma clang diagnostic pop
3.整個工程忽略該警告
在工程的build Setting -> undeclared selector 設(shè)置為NO闸溃。
從此,整個世界安靜了拱撵。