【问题标题】:Incompatible delegate type warning不兼容的委托类型警告
【发布时间】:2013-02-04 20:21:56
【问题描述】:
@interface Server : NSObject {
    id<ServerDelegate> _delegate;
    NSInputStream *_inputStream;
    NSOutputStream *_outputStream;
}

@property(nonatomic, assign) id<ServerDelegate> delegate;

每当我设置输入或输出流的委托时,我都会收到一条警告,指出它正在从不兼容的类型 Server* 分配给 id。

self.inputStream.delegate = self 就是一个例子。

实际的服务器运行良好,这只是我担心的警告。

【问题讨论】:

    标签: objective-c delegates


    【解决方案1】:

    如果您想将self (Server obejct) 指定为NSInputStream 的代理,您的Server 对象必须符合NSStreamDelegate 协议。

    因为NSInputStream 是NSStream 的子类

    https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSStream_Class/Reference/Reference.html#//apple_ref/occ/cl/NSStream

    @interface Server : NSObject<NSStreamDelegate> 
    [...]
    @end
    

    【讨论】:

    • 我的 _inputSteam 是一个属性,我只是没有将它包含在我提供的代码中
    【解决方案2】:

    您需要使Server 类符合NSStreamDelegate:

    @interface Server : NSObject <NSStreamDelegate> {
        ... var declarations
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2015-10-10
      • 2011-04-14
      相关资源
      最近更新 更多