Реализуете методы делегата, но все еще получаете предупреждение? - PullRequest
1 голос
/ 23 сентября 2010

Я получаю своеобразное предупреждение, а именно это:

warning: class does not implement the 'UIWebViewDelegate' protocol

... когда в моем приложении есть следующие методы:

-(void)webViewDidStartLoad {
    ...
}

-(void)webViewDidFinishLoad {
    ...
}

... и даже после установки делегата UIWebView на self, я все еще получаю это предупреждение, и методы никогда не вызываются (NSLog не дает результатов.)

Может кто-нибудь точно определить, что здесь происходит? Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 23 сентября 2010

Как говорит '@No on on', ваши методы объявлены неправильно. Вот почему методы вообще не вызываются.

Предупреждение имеет другую причину. Это потому, что ваше определение интерфейса не объявляет, что оно реализует протокол UIWebViewDelegate.

@interface MyClass : NSObject <UIWebViewDelegate> {
...
}
...
@end

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

3 голосов
/ 23 сентября 2010

Я не думаю, что ваши методы делегата являются правильными.Разве они не должны быть:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
}
...