Это не предназначено для решения какой-либо конкретной проблемы, просто чтобы понять нюансы свойств в Objc.
скажем, у меня есть класс Dude
# Dude.h
@interface Dude: NSObject
@property (readonly, nonatomic) NSNumber *height;
@end
Я расширяюкласс в файле реализации, но измените атрибуты.
# Dude.m
@interface Dude()
@property (readwrite, atomic) NSNumber *height;
@end
@implementation Dude
@end
Я получаю ошибку.
Атрибут 'atomic' в свойстве 'height' не соответствует свойству, унаследованному от 'Dude'
Так что на самом деле здесь происходит.Является ли свойство расширения таким же свойством?Я просто переопределяю методы доступа?
Также, когда я изменяю порядок так, чтобы общедоступный интерфейс был readwrite
, а частный интерфейс - readonly
Я получаю ошибку:
Недопустимая переопределение свойства в расширении класса «Чувак» (атрибут должен быть «readwrite», а его основной должен быть «readonly»)
Это заставляет меня думать, что это полное переопределение, но теперь я менее уверено том, что на самом деле происходит.Нужны уточнения.