MulticastDelegate в ObjectiveC - PullRequest
       22

MulticastDelegate в ObjectiveC

3 голосов
/ 23 октября 2009

Я использую класс MulticastDelegate, который является частью xmpp framework и занял здесь Он отлично работает для меня! Однако я получил предупреждение:

MulticastDelegate может не отвечать на 'SomeMethod'

Есть ли способ избежать предупреждения для этого класса? Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 23 октября 2009

Что это за someMethod? Вы включили заголовок MulticastDelegate.h?


Обновление: Ага, в этом случае вам нужно сообщить компилятору, что делегат реализует интерфейс Notifier:

#import "MulticastDelegate.h"

@protocol Notifier
- (void) someMethod; 
@end

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

Это должно сделать. Но разве код не слишком подозрительный? Откуда вы знаете, что delegate реализует someMethod, когда delegate является простым MulticastDelegate? Вы опускаете что-то в примере?

0 голосов
/ 23 октября 2009

У меня есть протокол

@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'

0 голосов
/ 23 октября 2009

Пока вы импортировали "MulticastDelegate.h" и someMethode является частью открытого интерфейса класса, как объявлено в "MulticastDelegate.h", вы не должны получать это предупреждение.

GCC выдает это предупреждение только в том случае, если вы отправляете сообщение объекту, который публично не объявляет об ответе на это сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...