我是Objective C(iOS)的新手,我很难搞清楚这种神秘的语言。
使用一个参数制作协议(委托)没有问题......
Person.h:
protocol PersonDetailsDelegate <NSObject>
@required
-(void) GetName:(NSString *) name;
@end
Person.m:
- (void) FireUpDelegate {
[self.delegate GetName: @"Michael"];
}
FirstViewController.m:
- (void) GetName: (NSString *) name {
NSLog(@"%@", name);
}
但我无法弄清楚使用两个论点......
Person.h:
@protocol PersonDetailsDelegate <NSObject>
@required
-(void) GetName:(NSString *) name; getAge:(int *) age;
@end
Person.m:
- (void) FireUpDelegate {
[self.delegate GetName: @"Michael"; getAge: 49];
}
FirstViewController.m:
- (void) GetName: (NSString *) name getAge: (int) age {
NSLog(@"%@ .. %i", name, age);
}
我遇到了一些错误 - 任何想法出错的地方?
万分感谢!!
魔
答案 0 :(得分:3)
您有一个;
太多(name
之后)。它应该是:
-(void) GetName:(NSString *) name getAge:(int) age;
;
使编译器认为方法的声明已完成,方法名称为GetName:
。如果您删除;
,则会将其正确解析为GetName:getAge:
。
编辑:将(int *)
更改为(int)
。
答案 1 :(得分:1)
;
之后删除分号(name
)。*
中的星标((int *)age
)。它也可能引发错误。 您的代码应如下所示:
-(void) GetName:(NSString *) name getAge:(int) age;
答案 2 :(得分:0)
是的,删除GetName方法中的分号