2014-03-13 31 views
2

我有下面的代碼行中我的iPhone應用程序:警告上sortedArrayUsingSelector

[[sections allValues] sortedArrayUsingSelector:@selector(sortSectionsBySectionName:)]; 

產生一個Undeclared selector警告。

數組中的所有對象都實現了sortSectionsBySectionName:,所以一切都按預期工作。然而,我想要擺脫這個警告。

有什麼辦法可以告訴編譯器:對象確實會實現選擇器嗎?鑄造或類似的東西?

任何建議,將不勝感激!

回答

1

所使用的方法應該對使用它的課程公開可見。這通常意指:

  1. 添加sortSectionsBySectionName:到陣列中和的對象的h文件#import .h文件在此控制器
  2. 添加類別上在陣列類的對象,在頂部並且定義了sortSectionsBySectionName:方法

一旦編譯器能夠在您嘗試使用的範圍內看到該方法的存在,您應該很好。

另外,要求編譯器忽略它:

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wundeclared-selector" 

[[sections allValues] sortedArrayUsingSelector:@selector(sortSectionsBySectionName:)]; 

#pragma clang diagnostic pop 

但要注意,這(和分類方法)可能都隱藏在運行時會導致問題的問題...

+0

的方法已經在範圍內可見。我認爲問題在於編譯器無法知道NSArray包含的對象是什麼類型 – EsbenB

+0

是的,我想過壓制警告,但我真的很想再次接近 – EsbenB