Подтвердить что ты не робот

Будет ли свойство readonly с пользовательским getter иметь синтезированную переменную экземпляра?

У меня есть ситуация, когда я не хочу, чтобы переменные экземпляра были синтезированы для набора свойств (я управляю их через пользовательские значения по умолчанию и брелок).

Если у меня есть следующее, _loginUsername наверняка будет синтезировано:

@property (nonatomic, readonly) NSString *loginUsername;

И я знаю, что если бы у меня было следующее, переменная экземпляра не была бы синтезирована, потому что в заявлении говорится: "Я сам позабочусь об этом":

@property (nonatomic, getter = loginUsername, setter = setLoginUsername) NSString *loginUsername;

Является ли поведение одинаковым для свойства readonly с пользовательским getter?:

@property (nonatomic, readonly, getter = loginUsername) NSString *loginUsername;

Будет ли синтезирован _loginUsername для объявления окончательного свойства? Я уверен, что не будет, но я пытаюсь лучше понять атрибуты свойств, поэтому хочу убедиться, что я не сработал.

Бонусные баллы для объяснения того, известно ли это во время компиляции (нет обмана и проверки в Xcode!).

У меня нет никаких операторов @synthesize в моем файле реализации.

4b9b3361

Ответ 1

Примечание. Компилятор автоматически синтезирует переменную экземпляра во всех ситуациях, когда он также синтезирует, по меньшей мере, один аксессор метод. Если вы используете как getter, так и setter для readwrite свойство или getter для свойства readonly, компилятор будет предположим, что вы контролируете реализацию свойства и не будет автоматически синтезировать переменную экземпляра автоматически. Если вы все еще нужна переменная экземпляра, вам нужно запросить, чтобы это было синтезировали

Программирование с помощью Objective-c - Инкапсуляция данных - под Вы можете реализовать методы пользовательского доступа