2010-07-05 69 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