目标C中的多播代表

时间:2009-10-23 06:50:09

标签: objective-c iphone

我正在使用MulticastDelegate类,它是 xmpp框架的一部分,并且被here它对我来说非常适合!但是我得到了警告:

  

'MulticastDelegate'可能无法响应   '的someMethod'

有没有办法避免这门课的警告? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

那是什么someMethod?您是否添加了MulticastDelegate.h标题?


更新: Aha,在这种情况下,您需要告诉编译器委托实现Notifier接口:

#import "MulticastDelegate.h"

@protocol Notifier
- (void) someMethod; 
@end

@interface Manager
{
   MulticastDelegate <Notifier> delegate;
}
@end

这应该做。但是代码有点可疑吗?当delegate为普通someMethod时,您如何知道delegate实施MulticastDelegate?你在例子中省略了什么吗?

答案 1 :(得分:0)

只要您导入"MulticastDelegate.h"并且someMethode是"MulticastDelegate.h"中声明的类的公共接口的一部分,您就不应该收到此警告。

GCC仅在您向未公开宣布回复该邮件的对象发送邮件的情况下发出此警告。

答案 2 :(得分:0)

我有一个协议

@protocol Notifier
 -(void) someMethod; 
@end

和班级

#import "MulticastDelegate.h"

@interface Manager
{
       MulticastDelegate delegate; 
}
@end

实施文件

中的某个地方
delegate= [[MulticastDelegate alloc] init];
.....
- (void)addDelegate:(id)_delegate
{
    [delegate addDelegate:_delegate];
}

然后

[delegate someMethod];

上面的行会引起我在问题中提到的警告。

  

'MulticastDelegate'可能无法响应   '的someMethod'