Assume всех следующего кода записывается в файле реализация .Could кто-нибудь объяснить разницу между:Ивара против расширения класса
#1
@interface ViewController()
@property (nonatomic) NSDictionary *currentAlbumData;
@end
@implementation ViewController
#2
@interface ViewController() {
NSDictionary *currentAlbumData;
}
@end
@implementation ViewController
#3
@interface ViewController
@end
@implementation ViewController {
NSDictionary *currentAlbumData;
}
- some methods here -
@end
так, как я это вижу, первый один объявляет переменные свойства в классе расширение. Второй объявляет переменную экземпляра в расширении класса. Третий объявляет переменную экземпляра, которая не является расширением класса ... что это подразумевает? Как это сравнить с просто объявлением ivar в расширении класса?
Вопрос о видимости для СЕБЯ? Как я могу видеть расширенные переменные прямо там в том же файле, или переходить к другому файлу в другом месте? Не очень понятно. Кроме того, это не вопрос масштаба (как в области файлов и глобальной области)? –
Переменная экземпляра, определенная в разделе '@ interface', видна любому коду, который ее видит. Не имеет значения, является ли этот '@ interface' расширением или основным. – Avi