Частично используемый объект вызывает утечку памяти? - PullRequest
0 голосов
/ 08 февраля 2012

Я подготовил класс для хранения данных, извлеченных из БД, и скажем, у меня есть 10 переменных.Что делать, если я буду использовать этот класс для разных представлений, и в каждом представлении будет использоваться разное количество переменных.

tableViewCell отобразит 3 переменные.View1 появится 6 вар.View2 отобразит 10 переменных.

Не вызовут ли утечки памяти неиспользуемые данные?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Неиспользуемые переменные не имеют ничего общего с утечками памяти.Вы хотите увидеть утечку памяти?

- (void)leakABunchOfMemory {
    for (int i = 0; i < 1000000000; i++) {
        NSMutableString *usedButNotUsedCorrectly = [[NSMutableString alloc] initWithFormat:@"%d", i];
    }
}

Это утечка памяти.Объект создается с каждым [NSMutableString alloc], и ни один из них не может быть уничтожен, потому что вы теряете ссылку на них, как только заканчивается эта итерация цикла.Они просто продолжают существовать и занимать пространство, как текстовые зомби, которые жаждут ОЗУ живых.Чтобы избежать утечек в коде Objective-C, следуйте правилам управления памятью и эквивалентным правилам для любых других используемых вами библиотек.

0 голосов
/ 08 февраля 2012

Утечка памяти происходит только при удалении всех указателей на память перед ее освобождением.Если вы повторно используете свою структуру данных, у вас может быть некоторая неиспользованная память, но это не будет утечкой, если вы никогда не освободите ее, когда указатели исчезнут (не оставляя вам способа освободить ее когда-либо снова).

...