Цель C: протокол (делегат) и несколько аргументов? - PullRequest
1 голос
/ 24 июля 2011

Я новичок в 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);    
}

Я получаю довольно много ошибок - есть идеи, где это идет не так?

Спасибо за миллион !!

Mojo

Ответы [ 3 ]

3 голосов
/ 24 июля 2011

У вас есть ; слишком много (после name).Это должно быть:

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

; заставляет компилятор думать, что объявление метода закончено, и что имя метода GetName:.Если вы удалите ;, он будет правильно проанализирован как GetName:getAge:.

РЕДАКТИРОВАТЬ: изменено (int *) на (int).

1 голос
/ 24 июля 2011
  1. Удалить точку с запятой (;) после name.
  2. Удалить звездочку (*) в (int *)age. Это также может вызвать ошибку.

Ваш код должен выглядеть следующим образом:

-(void) GetName:(NSString *) name getAge:(int) age;
0 голосов
/ 24 июля 2011

да, удалите точку с запятой в методе GetName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...