#ios #memory-leaks #nsmutablearray
#iOS #утечки памяти #nsmutablearray
Вопрос:
Похоже, в следующем цикле есть некоторые утечки памяти:
NSMutableArray *array1 = [[NSMutableArray alloc] init];
for(SomeClass *someObject in array2){ //has already been populated;
if (someObject.field == desiredValue){
[array1 addObject:someObject];
}
}
//EDIT:
//use array1 for very secret operations
[array1 release];
Есть идеи, почему?
Комментарии:
1. почему вы говорите, что это утечка памяти? вы уверены, что это не какая-то другая часть вашего кода?
2. Вы выпускаете array2? Проблема может быть там.
3. Если бы я сказал, что уверен, я бы солгал. но именно к этому меня ведет инструмент утечки, когда я дважды щелкаю по отчету об утечке. Может быть, я новичок в отладке.
4. Могут ли это быть объекты array2, которые протекают (например, добавлены в array2, но никогда не выпускались впоследствии)?
Ответ №1:
Освобождаете ли вы все свои сохраненные свойства в своем классе? Убедитесь, что в dealloc освобождены все сохраненные свойства.. Убедитесь, что ваш SomeClass не имеет утечек..
Комментарии:
1. Хорошая мысль, но утечка все еще остается. Тем не менее, исправлена ошибка, из-за которой зависало мое приложение, так что оно снова работоспособно, но все же эта красная строка в утечках раздражает.
2. Можете ли вы воссоздать утечку с помощью какого-либо пользовательского SomeClass (если вы не можете опубликовать свой исходный класс) и опубликовать код… Насколько я вижу, ваш код идеален и не содержит утечек..
3. Я буду, но в данный момент у меня на шее дышит фигура, похожая на босса, поэтому, поскольку она работает, я вернусь к ней позже 🙂 спасибо за ваше время!