Создает ли он пользовательский установщик для переменной экземпляра controller
?
Если это так, может существовать код, который вызывается при изменении переменной controller
через установщик. Просто установите переменную controller
с помощью:
controller = [[GLViewController alloc] init];
не будет вызывать метод установки; однако, присваивая недавно выделенный объект локальной переменной, затем устанавливая его с помощью:
self.controller = theController;
вызовет метод установки, поскольку это сокращенный способ записи:
[self setController:theController];
и дополнительный код в установщике будет выполнен. Это обычно, где вы ожидали бы различие между двумя методами.
Edit:
Очевидно, что после просмотра кода он не реализует пользовательский метод установки, однако метод, который он использовал , по-прежнему наиболее часто используется, когда будет реализован метод пользовательского установки.
Я предполагаю, что причина дополнительного кода заключается в том, что он планирует выпустить переменную после выделения, и, если она назначена локальной переменной, он может вызвать метод setter с локальной переменной и затем вызвать release
для локальная переменная впоследствии. Это было бы в целом более читабельным, чем использование
[[self controller] release]
Тем не менее, это странный способ сделать это, так как синтезированная реализация установщика сохранит переменную экземпляра, но затем он освобождает ее, как только она была установлена в переменную экземпляра, а вызов release
отменяет Для вызова retain
было бы более разумно установить переменную, используя однострочный метод.