получить значение переменной NSString - PullRequest
2 голосов
/ 14 декабря 2011

У меня странная проблема.pictureLink - глобальная переменная, объявленная в .h

 NSString *pictureLink;
}
@property(retain,nonatomic) NSString *pictureLink;

я написал этот код

NSString * myPictureUrl=[NSString stringWithFormat:@"http://mywebsite.com/uploads/%@.jpg",hash];
pictureLink=myPictureUrl;

У меня странный результат, это должен быть указатель Или

pictureLink=[NSString stringWithFormat:@"http://mywebsite.com/uploads/%@.jpg",hash];

у меня ошибка EXC_BAD_ACESS

Ответы [ 2 ]

6 голосов
/ 14 декабря 2011

Это ошибка управления памятью, вы не сохраняете myPictureUrl в своем коде.

[NSString stringWithFormat:@"http://mywebsite.com/uploads/%@.jpg",hash]; возвращает автоматически выпущенное значение, поэтому у вас есть два варианта:

  1. pictureLink=myPictureUrl; должно выглядеть как [self setPictureLink:myPictureUrl];.
  2. сделайте [myPictureUrl retain];, и не забудьте release позже.

Подумайте об использовании ARC (автоматического сохранения счета) для вашего проекта. С ARC компилятор заботится о сохранении счетчиков, поэтому вам не нужно, на самом деле это не разрешено. Существует рефакторинг, который преобразует текущий проект.

2 голосов
/ 14 декабря 2011

Вы обходите свой @property, вызывая непосредственно переменную, поэтому magic, предоставленный вашими настройками @property, не выполняется, как сохранение и разблокировка. вам нужно сделать self.pictureLink, чтобы использовать @property.
Чтобы избежать соблазна прямого доступа к моей переменной, я делаю следующее

NSString *theProperty
}
@property (nonatomic, retain) NSString *property;

и

@synthesise property = theProperty;

Таким образом, если я обойду @property Я действительно, очень хотел это сделать.
Но вам нужна очень, очень, очень веская причина для этого, и тогда это может оказаться недостаточно веской причиной.

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