Имеет ли значение тип в этом методе проверки KVC?
Например, в документах метод проверки в стиле KVC реализован так:
-(BOOL)validateAge:(id *)ioValue error:(NSError **)outError
Они использовали id* как тип для ioValue. Так как это не является частью сигнатуры метода, мне интересно, было бы больно делать что-то вроде:
-(BOOL)validateAge:(NSNumber *)ioValue error:(NSError **)outError
Это все еще нормально с KVC?
1 ответ
Решение
Это не сработает, потому что они не одинаковы. id*
будет ближе к NSNumber**
так как метод принимает указатель на указатель. Итак, ваш метод будет выглядеть так:
-(void)validateAge:(NSNumber**)ioValue error:(NSError**)outError
Но в этом нет никакого смысла. id
будет отлично работать для всего, что вам нужно сделать, и если вы измените его, а затем откорректируете этот атрибут, вы сможете внести небольшую ошибку в ваше приложение.
Короткий ответ, да, вы можете изменить тип входного параметра; но ты действительно не должен.