Вы не можете устанавливать переменные экземпляра в методах класса, поскольку у вас нет ссылки на экземпляр. Метод initialize
в классе вызывается в первый раз, когда класс получает какие-либо сообщения, и предназначен для выполнения любых глобальных настроек, которые могут понадобиться вашему классу перед обработкой любых реальных сообщений. Например, установка начальных пользовательских настроек по умолчанию обычно выполняется в методе initialize
контроллера вашего приложения или класса делегата.
Чтобы установить переменные экземпляра, вы должны сделать это в назначенном инициализаторе объекта (это init
по умолчанию, но некоторые объекты изменяют назначенный инициализатор, если им нужно принять параметры). Например:
- (id)init {
if( (self = [super init]) ) {
myInstanceVariable = (int *)malloc(50 * sizeof(int));
}
}
- (void)dealloc {
free(myInstanceVariable);
[super dealloc];
}
Здесь у вас есть ссылка на self
, которую вы можете использовать, потому что выделен отдельный экземпляр объекта.