2013-09-05 2 views
-1

Я нахожу ту же тему в stackoverflow, но я не могу решить свои проблемы.- [CFString intValue]: сообщение отправлено на освобожденный экземпляр 0xa3a2610

Это мой код

В моей .h

@property (nonatomic, retain) NSMutableArray *favoriteShops; 

Мой .m

NSString *idStr = @""; 
NSString *shopTypeId = @""; 
for (SHDFavoriteShopView *favoriteShopView in favoriteShops) { 
      idStr = [favoriteShopView valueForKey:kId]; 
      shopTypeId = [favoriteShopView valueForKey:kShopTypeId]; 
      if (tappedView.tag == [idStr intValue]) { // Crash here 
       shop.shopType = [shopTypeId intValue]; 
       break; 
      } 

     } 

У меня проблема когда-то, как правило, не.

Не могли бы вы помочь мне.

Спасибо Вам

ответ

1

Это признак того, что строка, которую вы обращаетесь (idString в данном случае) уже освобождены. Существует ряд причин, почему это может произойти. Если строка была первоначально выделена с помощью метода автоматического выпуска (например, [NSString stringWithFormat:@"..."]), а строка была автоматически отпущена. Или если вы выделили строку, но позже ее выпустили, явно вызвав [idStr release]. Вам нужно убедиться, что вы не используете повторную строку после того, как она уже была выпущена. Это может быть сложно!

+0

Я использую [idStr release] после цикла. Но у меня проблема в цикле –

+0

Вы не должны выпускать 'idStr' после цикла! Это изменения стоимости на каждой итерации цикла, так что вы выпускаете? Просто последнее значение! Но это не проблема, которую вы видите здесь. Я бы посмотрел в 'favoriteShopView'. Вы запрашиваете 'favoriteShopView' значение некоторого ключа, и оно возвращает строку, на которую указывает' idStr'. Таким образом, это может быть уже освобожденная строка. Если вы разместите код для «SDHFavoriteShopView», это может помочь уменьшить его. – user1118321

+0

favoriteShopView - это NSDictionary. Это моя ошибка. Но когда я заменяю SHDFavoriteShopView на NSDictionary, у меня такая же проблема –

Смежные вопросы