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