Управление памятью в iOS - PullRequest
       0

Управление памятью в iOS

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

Привет всем (извините за мой английский).Я новичок в программировании на objetive-C и iOS.Вы можете мне помочь?

@interface RootViewController : UITableViewController 
{
    NSMutableArray *keysFromQuery;
}

@property (nonatomic, retain) NSMutableArray *keysFromQuery;
....
....
NSString *category = [keysFromQuery objectAtIndex:0];

Что произойдет с [keysFromQuery objectAtIndex: 0], если я сделаю: [релиз категории];?

Что произойдет с категорией, если я сделаю это после: [keysFromQuery release];?

Я не очень хорошо знаю, как работают ссылки и механизмы памяти.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 02 февраля 2011

Не звоните -release на category.Вы не являетесь владельцем объекта.Вы должны освобождать только объекты, владельцем которых вы стали, через NARC (новый / alloc / retain / copy).Для получения дополнительной информации прочитайте Руководство по программированию управления памятью .

0 голосов
/ 28 января 2013

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

0 голосов
/ 18 октября 2011

Что произойдет с [keysFromQuery objectAtIndex: 0], если я сделаю: [категория выпуска] ;? Вы не должны этого делать, потому что это автоматически выпущенный объект.

Что будет с категорией, если я сделаю после этого: [keysFromQuery release] ;? NSString все еще сохраняется, когда вы отпускаете keysFromQuery после инициализации.

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

Если метод, который возвратил вам объект, явно не заявляет, что он возвращает объект, связанный с «новым», «оставленным», «выделенным», «созданным» или «скопированным», вы не должны освобождать его. Это так просто.

То же самое можно сказать о выпуске (или авто-выпуске) только для таких случаев, как

[object retain];
[object copy];
[SomeClass newInstanceWithProperty: @"a"];
[[SomeClass alloc] initWithProperty: @"a"];

и т.д.

Так что в этом случае вам не нужно ничего делать, и упомянутый вами "релиз", по всей вероятности, вылетит из вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...