как правильно сохранить и выпустить в приложении для iPhone / iPad - PullRequest
1 голос
/ 01 февраля 2011

Я новичок в программировании для iPhone / iPad с Objective-C.

У меня проблемы с управлением памятью при освобождении или повторном размещении объектов.Я делаю приложение, которое содержит несколько контроллеров представления для переключения представлений.

Большинство используемых объектов объявлены как IBOutlets, и я хотел бы знать, как и когда я должен использовать сохранение и выпуск, чтобы не было проблем с памятью и прекращения наблюдения за правильным применением.

Мне было бы интересно освободить их при переключении на другой контроллер представления или когда мне не нужно больше раз использовать объект.

Может кто-нибудь объяснить мне, как и когда я должениспользовать сохранить и выпустить?Я прочитал документацию Apple, но думаю, что это немного сбивает с толку.У меня есть что я должен положить туда в dealloc или didReceiveMemoryWarning, но не решает мою проблему.

Извините, если я допустил орфографические ошибки.Спасибо в andance.

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

для обнаружения утечек в вашем проекте запустите приложение с помощью инструментального инструмента или просто запустите приложение из xcode с помощью shift + command + A.

каждый используемый вами объект alloc и init должен быть освобожден, иначе это вызовет утечку памяти. объявите каждый объект в файле .h и установите свойство и освободите этот объект в методе dealloc.

сохранение требуется только в том случае, если вам необходимо сохранить текущее состояние после того, как вы ушли со страницы.

0 голосов
/ 01 февраля 2011

Если вы отправите copy mutablecopy retain или alloc на объект, то вы обязаны освободить этот объект, когда закончите с ним.

NSString *allocedString = [[NSString alloc] initWithString:@"world"];
NSString *myString = [NSString stringWithFormat:@"Hello%@", allocedString];

[allocedString release], allocedString = nil;

Вы несете ответственность за выпуск allocedString, но не myString (который использует autorelease внутренне)

...