Почему не Это нравится компилятору? Приведение должно работать как в C, как я могу прочитать здесь Как преобразовать объект в Objective-C .
[p setAge:(NSNumber*)10];
где
- (NSNumber*) age {
return _age;
}
- (void) setAge: (NSNumber*)input {
[_age autorelease];
_age = [input retain];
}