我想在NSObject實例上使用選擇器而不是需要實現的協議。例如,有一個類別方法應該設置一個錯誤屬性,如果它調用的NSObject實例支持它。這是代碼,而該代碼按預期工作:如何擺脫'未聲明的選擇器'警告
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
然而,編譯器沒有發現任何方法與SETERROR圍:簽名,所以它給了我一個警告,對於包含@selector(setError:)
每一行片段:
Undeclared selector 'setError:'
我不希望有申報協議擺脫這一警告的,因爲我不希望出現這種情況可能會藉此實現什麼特別的所有類。按照慣例,我希望他們有一個setError:
方法或財產。
這是可行的嗎?怎麼樣?
乾杯,
EP
的解決方案是很好解釋[performSelector可能會導致泄漏,因爲它的選擇器是未知](http://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown) – loretoparisi 2015-11-18 12:01:43