我使用的是MulticastDelegate類,它是xmpp框架的一部分並被拍攝here它對我來說非常適合!不過我警告:ObjectiveC中的MulticastDelegate
「MulticastDelegate」可能不響應 「的someMethod」
有什麼辦法來避免此類的警告? 在此先感謝。
我使用的是MulticastDelegate類,它是xmpp框架的一部分並被拍攝here它對我來說非常適合!不過我警告:ObjectiveC中的MulticastDelegate
「MulticastDelegate」可能不響應 「的someMethod」
有什麼辦法來避免此類的警告? 在此先感謝。
這是什麼樣的someMethod
?您是否包含MulticastDelegate.h
標題?
更新:啊哈,在這種情況下,你需要告訴該委託實現Notifier
接口編譯:
#import "MulticastDelegate.h"
@protocol Notifier
- (void) someMethod;
@end
@interface Manager
{
MulticastDelegate <Notifier> delegate;
}
@end
這應該做的。但是這不是代碼有點腥嗎?你怎麼知道delegate
implements someMethod
當delegate
是一個普通的MulticastDelegate
?你在示例中省略了什麼?
非常感謝!而已。 – Dmytro
只要您導入了"MulticastDelegate.h"
並且某個方法是"MulticastDelegate.h"
中聲明的類的公共接口的一部分,則不應該得到此警告。
GCC僅在您向未公開聲明回覆該消息的對象發送消息的情況下發出此警告。
我有一個協議
@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'
到多播委託首部的鏈接是死的。這是一個到維基頁面的鏈接:http://code.google.com/p/xmppframework/wiki/MulticastDelegate。我找不到舊的課程,但瀏覽源代碼後,我發現一個基於GCD的新課程:http://code.google.com/p/xmppframework/source/browse/Utilities/GCDMulticastDelegate.h – chrish
我無法訪問找到在這個問題中引用的'MulticastDelegate' - 所以在這裏建立了自己的:http://www.scottlogic.co.uk/blog/colin/2012/11/a-multicast-delegate-pattern-for-ios-控制/ – ColinE