2009-10-23 209 views
3

我使用的是MulticastDelegate類,它是xmpp框架的一部分並被拍攝here它對我來說非常適合!不過我警告:ObjectiveC中的MulticastDelegate

「MulticastDelegate」可能不響應 「的someMethod」

有什麼辦法來避免此類的警告? 在此先感謝。

+0

到多播委託首部的鏈接是死的。這是一個到維基頁面的鏈接:http://code.google.com/p/xmppframework/wiki/MulticastDelegate。我找不到舊的課程,但瀏覽源代碼後,我發現一個基於GCD的新課程:http://code.google.com/p/xmppframework/source/browse/Utilities/GCDMulticastDelegate.h – chrish

+0

我無法訪問找到在這個問題中引用的'MulticastDelegate' - 所以在這裏建立了自己的:http://www.scottlogic.co.uk/blog/colin/2012/11/a-multicast-delegate-pattern-for-ios-控制/ – ColinE

回答

2

這是什麼樣的someMethod?您是否包含MulticastDelegate.h標題?


更新:啊哈,在這種情況下,你需要告訴該委託實現Notifier接口編譯:

#import "MulticastDelegate.h" 

@protocol Notifier 
- (void) someMethod; 
@end 

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

這應該做的。但是這不是代碼有點腥嗎?你怎麼知道delegate implements someMethoddelegate是一個普通的MulticastDelegate?你在示例中省略了什麼?

+0

非常感謝!而已。 – Dmytro

0

只要您導入了"MulticastDelegate.h"並且某個方法是"MulticastDelegate.h"中聲明的類的公共接口的一部分,則不應該得到此警告。

GCC僅在您向未公開聲明回覆該消息的對象發送消息的情況下發出此警告。

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'