Отладка значений @property / ivar - PullRequest
1 голос
/ 05 марта 2012

Если вы определите указатель как @property, а также как переменную экземпляра в @interface, генерирует ли это две версии одной и той же переменной?Должны ли вы сделать одно или другое?

Я программно пытаюсь создать UIImageView и отобразить его в новом экземпляре UIWindow, и я использую отладчик для проверки значений впонять, почему это не работает.

Если я просто определю UIWindow * как @property, а не как ивар, он не появится в окне данных отладчика, но printf выдаст его значение как0x6D4CD00.Если я определяю его как @property и как ивар, то я могу видеть его в отладчике, но это 0x0, а printf по-прежнему говорит 0x6D4CD00.Это две разные переменные?Почему я не вижу @property в отладчике?(симулятор iPhone) + (ARC = вкл)

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Объявление свойств с помощью ключевого слова @property не создает никакой переменной экземпляра. Это директива @synthesize, которая связывает свойство с переменной.

Имя переменной экземпляра либо явно указывается через нотацию @synthesize foo = _foo, либо, по умолчанию, само имя свойства.

Директива @synthesize может либо подключать явно объявленную переменную экземпляра к свойству, либо, если переменная с идентификатором свойства отсутствует, создать ее неявно.

Обычно нет никаких причин явно объявлять переменные экземпляра.

1 голос
/ 05 марта 2012

Согласитесь с @ nikolai-ruhe, что в коде нет причин явно объявлять переменные экземпляра, но может быть полезно иметь немедленный доступ в отладчике (путем вращения вниз self), чтобы увидеть содержимое этих переменных. Целиком вещь, хотя; Вы всегда можете также заняться самоанализом po [self valueForKey:@"variableName"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...