Я часто обнаруживаю, что знаю, что определенное свойство базового класса всегда будет определенным типом в подклассе. Например, в приведенном ниже примере свойство obj
всегда будет объектом NSString в Derived. Однако мне нужно, чтобы это свойство было более общим типом id в классе Base.
@interface Base
@property (strong, nonatomic) id obj;
@end
@implementation Base
//@synthesize obj = obj_;
@dynamic obj;
@end
@interface Derived : Base
@property (strong, nonatomic) NSString *obj;
@end
@implementation Derived
@synthesize obj = obj_;
@end
Правильно ли этот код? Я обеспокоен тем, что @synthesize появляется дважды. Является ли это создание двух свойств или объявление @synthesize в Derived переопределяет значение в Base?
Изменить: Изменение смысла @synthesize на @dynamic в базе имеет больше смысла.
Изменить: Для этого требуется IOS SDK 5.