目标C:协议(委托)和多个参数?

时间:2011-07-24 13:24:02

标签: objective-c ios xcode

我是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);    
}

我遇到了一些错误 - 任何想法出错的地方?

万分感谢!!

3 个答案:

答案 0 :(得分:3)

您有一个;太多(name之后)。它应该是:

-(void) GetName:(NSString *) name getAge:(int) age;

;使编译器认为方法的声明已完成,方法名称为GetName:。如果您删除;,则会将其正确解析为GetName:getAge:

编辑:将(int *)更改为(int)

答案 1 :(得分:1)

  1. ;之后删除分号(name)。
  2. 删除*中的星标((int *)age)。它也可能引发错误。
  3. 您的代码应如下所示:

    -(void) GetName:(NSString *) name getAge:(int) age;
    

答案 2 :(得分:0)

是的,删除GetName方法中的分号