I want to override an NSString property declared in a superclass. When I try to do it using the default ivar, which uses the the same name as the property but with an unders
Only the superclass has access to the ivar _species
. Your subclass should look like this:
- (NSString *)species {
NSString *value = [super species];
if (!value) {
self.species = @"Homo sapiens";
}
return [super species];
}
That sets the value to a default if it isn't currently set at all. Another option would be:
- (NSString *)species {
NSString *result = [super species];
if (!result) {
result = @"Home sapiens";
}
return result;
}
This doesn't update the value if there is no value. It simply returns a default as needed.