Управление памятью в iOS все еще странное для меня, но это самый интересный аспект для меня, поэтому я прошу помощи здесь с моим кодом.
Я пытаюсь создать экземпляр объекта NSDictionary, я использую его, затем хочу выпустить, но я получил ошибку освобождения объекта, это код:
if ([jsonArray count] > 0) {
NSDictionary *commentDictionary = [[NSDictionary alloc]init];
int i;
for (i = 0; i < [jsonArray count]; i++) {
commentDictionary = [jsonArray objectAtIndex:i];
NSLog(@"debugging message here"]);
commentLabel.text = [commentDictionary objectForKey:@"commentText"];
//[commentDictionary retain];
}
//[commentDictionary release];
commentDictionary = nil;
NSLog(@"NSDictionary retainCount = %d",[commentDictionary retainCount]);
}
Ничего особенного, я заполняю словарь из массива, в моем коде вы можете видеть, что я пытался выпустить, но я закомментировал из-за ошибки.
Почему я не могу выпустить словарь?
Кроме того, в чем разница между установкой NSDictionary равным nil, который возвращает ноль в retainCount и release (что должно составлять счет -1)?
Заранее большое спасибо за любую помощь в этой теме.
Фабрицио