В современном времени выполнения.
Вы можете объявить свойство без того же имени ivar, уже объявленного в интерфейсе
как
@interface MyClass: NSObject
{
NSString *str2;
}
@property (retain) NSString *str1;
@property (retain) NSString *str2;
@end
И я знаю, это автоматически сгенерирует ивару str1, поскольку в реализации вы можете получить доступ как к self.str1
, так и к чисто str1
.
Но мой вопрос в том, есть ли разница между str1 и str2?
Если они одинаковы, почему расширение класса (категория без имени) позволяет добавлять новое объявленное свойство, которое также генерирует ivar, но не позволяет добавлять экземпляр ivar в расширение класса? (Я знаю LLVM 2.0 или позже позволяет это, но gcc не делает)