2011-02-01 2 views
1

Я новичок в программировании для iPhone/iPad с Objective-C.Как правильно использовать и сохранять в приложении для iPhone/iPad

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

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

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

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

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

ответ

1

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

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

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

+0

бриф, но хорошо объяснено и понятно, спасибо! Я постараюсь посмотреть, как это работает. – karse23

0

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

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

[allocedString release], allocedString = nil; 

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