Zdefiniowałem protokół w osobnym pliku (myProtocol.h). Oto kod dla niego:Aplikacja IOS - zdefiniuj protokół w oddzielnym pliku
#import <Foundation/Foundation.h>
@protocol myProtocol <NSObject>
-(void) loadDataComplete;
@end
Teraz chcę wywołać tę metodę tak zrobiłem następujący kod:
firstViewController.h:
#import "myProtocol.h"
@interface firstViewController : UIViewController{
id <myProtocol> delegate;
}
@property (retain) id delegate;
-(void) mymethod;
firstViewController.m
@implementation firstViewController
@synthesize delegate;
- (void)viewDidLoad {
[self mymethod];
}
-(void) mymethod {
//some code here...
[delegate loadDataComplete];
}
mam inny plik, w którym protokół wykorzystywany jest również:
secondViewController.h:
#import "myProtocol.h"
@interface secondViewController : UIViewController<myProtocol>{
}
secondViewController.m:
-(void) loadDataComplete{
NSLog(@"loadDataComplete called");
}
, ale mój secondViewController nie wywołuje metad protokołu. Dlaczego tak jest? Wszelkie sugestie zostaną docenione.
Czy faktycznie tworzysz obiekt i przypisujesz go jako delegata? Ponadto - wyraźne odniesienie do delegata nie jest typowe. Na koniec nazwy klas powinny zaczynać się od dużej litery. – Abizern
czy ustawiasz swojego delegata, jaka jest wartość self.delegate w wiadomość Mymethod? mam zwyczaj używać "siebie". dla dostępu do właściwości – divol