2010-07-05 68 views
0

我有這個問題.... 在我viewcontroller.h我定義我的課是這樣的:iphone進行個人委託

myClass* iR; 

後:

@property (nonatomic,retain) IBOutlet myClass* iR; 

到myClass.h我添加了這個:

@protocol myClassDelegate <NSObject> 
-(void) didLogon:(bool)isLogged; 
@end 

後:

@property (nonatomic, assign) id<myClassDelegate> delegate; 

如今,走進我的課,在connectionDidFinishLoading方法(我用了一個NSURLConnection的檢索添加此登錄數據:

[self.delegate didLogon:true]; 

到myviewcontroller.h:

<myClassDelegate> 

進入myviewcontroller.m:

-(void)didLogon:(bool)isLogged{ 
... 
} 

但程序進入self.delegat e登錄,但到myviewcontroller.m沒有去......你明白爲什麼?

回答

2

你在哪裏分配代表?你需要的東西是這樣的:

MyViewController *viewController = [[MyViewController alloc] init]; 
self.delegate = viewController; 

爲安全起見,當你調用委託方法,稱他們是這樣的:

if ([self.delegate respondsToSelector:@selector(didLogon:)]) { 
    [self.delegate didLogon:YES]; 
} 

這樣的話,如果委託不支持這種方法,你的程序不識別該選擇器時不會崩潰。

+0

謝謝傑夫非常有用,這也是對代表的檢查... – ghiboz 2010-07-05 11:38:51