Отредактировано, чтобы добавить ответ ко второй части:
Это работает в Xcode 3.1, поэтому я не понимаю, почему это не будет работать в более поздних версиях
ЧтоВы можете сделать это, посылая сообщения непосредственно объекту из консоли во время отладки.
Предположительно, вы остановились на точке останова и смотрите на переменные в представлении отладки.для объектов они показывают вам указатели.Возможно, вы не видите iVar, но у вас есть указатель на объект, и вы можете отправлять ему сообщения.например:
- Вы остановились на некоторой точке останова в пределах объекта
- В режиме просмотра переменной указатель адреса
self
будет (скажем) 0x1031380
. - В консоли введите
po [0x1031380 title]
(обратите внимание, что точки с запятой нет) и введите - . Вы должны увидеть, что вы хотите в консоли.
Когдавы объявляете свойство с (retain)
и затем синтезируете свойство, вы создаете сеттеры, которые сохраняют переданный им объект / значение.поэтому в приведенном выше случае вы должны переписать метод следующим образом:
- (void)viewDidLoad {
self.title = @"woah";
}
И строка будет сохранена как часть установщика.Кроме того, я предпочитаю использовать (copy)
для кластеров классов, которые имеют изменяемые / неизменяемые пары (NSString
, NSSet
, NSArray
и т. Д.).Таким образом, свойство не может быть изменено извне.