Имеет ли значение тип в этом методе проверки KVC? - PullRequest
0 голосов
/ 13 июня 2010

Например, в документах реализован метод проверки в стиле KVC следующим образом:

-(BOOL)validateAge:(id *)ioValue error:(NSError **)outError

Они использовали id * в качестве типа для ioValue.Так как это не является частью сигнатуры метода, мне интересно, было бы больно делать что-то вроде:

-(BOOL)validateAge:(NSNumber *)ioValue error:(NSError **)outError

Это все еще нормально с KVC?

1 Ответ

1 голос
/ 14 июня 2010

Это не сработает, потому что они не одинаковы. id* будет ближе к NSNumber**, так как метод принимает указатель на указатель. Итак, ваш метод будет выглядеть так:

-(void)validateAge:(NSNumber**)ioValue error:(NSError**)outError

Но в этом есть НЕТ смысл. id будет отлично работать для всего, что вам нужно сделать, и если вы измените его, а затем откорректируете этот атрибут, вы сможете внести небольшую ошибку в ваше приложение.

Краткий ответ, да, вы можете изменить тип входного параметра; но вы действительно не должны.

...