sortedArrayUsingSelector上的警告

时间:2014-03-13 10:40:23

标签: ios objective-c nsarray

我的iPhone应用程序中有以下代码行:

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

生成Undeclared selector警告。

数组中的所有对象都实现了sortSectionsBySectionName:,因此一切都按预期工作。但是,我想摆脱警告。

有没有办法告诉编译器,对象确实会实现选择器?铸造或类似的东西?

任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

使用它的方法应该是公开显示的方法。这通常意味着:

  1. sortSectionsBySectionName:添加到数组中对象的.h文件中,并#import此控制器中的.h文件
  2. 在此控制器顶部的数组类中的对象上添加一个类别,并在那里定义sortSectionsBySectionName:方法
  3. 一旦编译器可以看到你尝试使用它的范围内存在方法,你就应该很好。

    或者,要求编译器忽略它:

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wundeclared-selector"
    
    [[sections allValues] sortedArrayUsingSelector:@selector(sortSectionsBySectionName:)];
    
    #pragma clang diagnostic pop
    

    但要注意这个(以及类别方法)都可以隐藏在运行时会导致问题的问题......