删除“协议未实现的方法”警告

时间:2011-08-31 07:49:57

标签: objective-c methods protocols categories required

想象一下,您希望声明一个新协议,并通过在“基础”类上实现其方法来为其定义默认行为。 如果您不拥有此类的实现文件(例如NSObject),您可能希望通过类别实现协议的方法。 这可能会引导您进行类似下面的代码:

    /* * * * * * * * * * * * * * * * * * * * * * * * *
    *      Formal Protocol
    * * * * * * * * * * * * * * * * * * * * * * * * */

    @protocol MyProto <NSObject>

    - (void) myMethod;

    @end



   /* * * * * * * * * * * * * * * * * * * * * * * * *
    *      Informal Protocol (a Category Interface)
    * * * * * * * * * * * * * * * * * * * * * * * * */

    @interface NSObject (MyProto)
        <MyProto>
    @end



   /* * * * * * * * * * * * * * * * * * * * * * * * *
    *      Category Implementation
    * * * * * * * * * * * * * * * * * * * * * * * * */

    @implementation NSObject (MyProto)

    - (void) myMethod {
        return;
    }

它无法正确编译,并在行

周围产生一些警告
@implementation NSObject (MyProto)
  

(语义问题)

     
      
  • 协议中的方法未实现   
        
    • 此处声明的方法
    •   
    • 直接或间接协议'NSObject'
    • 需要   
  •   

要取消这些警告,只需在协议声明中删除对NSObject协议的提及

    @protocol MyProto

    - (void) myMethod;

    @end

这将阻止链接器在类别实现中重新要求NSObject协议的方法。

0 个答案:

没有答案