Прежде всего, «вне области» в отладчике просто означает, что отладчик не может понять, как отобразить переменную.Это по сути бессмысленно.Вы можете напечатать значение, нажав на консоль (в которой есть «gdb>») и напечатав
po image_name
Во-вторых, вы неправильно используете сеттеры.У вас есть @ property для ваших двух переменных, но вы не используете их.Когда вы делаете
variable = value;
, это просто установка переменной - методы свойств не вызываются.Тем не менее,
self.variable = value;
вызовет установщик свойств, который, поскольку у вас есть "неатомное значение", сохранит вашу переменную, и все будет разбухать.
В этом случае вывы делаете
image_name = Name;
, где вы хотите сделать
self.image_name = Name;
или (как подсказывает Тоб)
image_name = [Name retain];
Это очень распространенная вещь, когда вы начинаете делатьКодирование Objective-C, в котором вы путаете два способа установки переменной в классе, и очень важно, чтобы вы получили разницу.Ваши свойства не вызываются, когда вы не используете экземпляр точка переменная .
По совпадению, многие люди также склонны путать это еще больше, делая такие вещи, как
self.image_name = [Name retain];
Это абсолютно неверно.В результате вы будете пропускать «Имя» каждый раз, когда устанавливаете имя_изображения, из-за двойного сохранения (один раз для @property (неатомный, retain ) в вашем установщике и один раз для [Name retain]
).