Где утечки памяти в моем for … в цикле с AddObject

#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. Я буду, но в данный момент у меня на шее дышит фигура, похожая на босса, поэтому, поскольку она работает, я вернусь к ней позже 🙂 спасибо за ваше время!