Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iphone成为个人代表_Iphone_Objective C_Class_Delegates - Fatal编程技术网

iphone成为个人代表

iphone成为个人代表,iphone,objective-c,class,delegates,Iphone,Objective C,Class,Delegates,我有这个问题。。。。 在我的viewcontroller.h中,我对类的定义如下: myClass* iR; MyViewController *viewController = [[MyViewController alloc] init]; self.delegate = viewController; if ([self.delegate respondsToSelector:@selector(didLogon:)]) { [self.delegate didLogon:YE

我有这个问题。。。。 在我的viewcontroller.h中,我对类的定义如下:

myClass* iR;
MyViewController *viewController = [[MyViewController alloc] init];
self.delegate = viewController;
if ([self.delegate respondsToSelector:@selector(didLogon:)]) {
    [self.delegate didLogon:YES];
}
及之后:

@property (nonatomic,retain) IBOutlet myClass* iR;
@property (nonatomic, assign) id<myClassDelegate> delegate;
我在myClass.h中添加了以下内容:

@protocol myClassDelegate <NSObject>
-(void) didLogon:(bool)isLogged;
@end
[self.delegate didLogon:true];
进入myviewcontroller.h:

<myClassDelegate>

但是程序进入self.delegate登录,但进入myviewcontroller.m没有进入。。。你知道为什么吗?

你在哪里分配代表?你需要这样的东西:

myClass* iR;
MyViewController *viewController = [[MyViewController alloc] init];
self.delegate = viewController;
if ([self.delegate respondsToSelector:@selector(didLogon:)]) {
    [self.delegate didLogon:YES];
}
为了安全起见,在调用委托方法时,请按如下方式调用它们:

myClass* iR;
MyViewController *viewController = [[MyViewController alloc] init];
self.delegate = viewController;
if ([self.delegate respondsToSelector:@selector(didLogon:)]) {
    [self.delegate didLogon:YES];
}
这样,如果委托不支持该方法,则当程序无法识别该选择器时,程序不会崩溃