Когда выпускать динамически созданные объекты - PullRequest
0 голосов
/ 03 апреля 2012

В моем приложении для iPad

у меня есть один пользовательский класс, унаследованный от UIButton.

Я добавляю кнопки на главном экране динамически, используя цикл for.

ЭтоКнопка также имеет метку.

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

for(NSMutableDictionary *dict  in Categories)
{

Category *category=[[Category alloc] initWithName:[dict valueForKey:@"category_name"]  identity:[[dict valueForKey:@"category_id"] intValue] imageName:nil];

category.lblimagesCount=[[UILabel alloc] initWithFrame:CGRectMake(category.frame.size.width-31,   category.frame.origin.y-42, 26, 26)];

[category addSubview:category.lblimagesCount];

[self.viewHeader addSubview:category];

[category release];
category=nil;

}

Как избежать утечек памяти. Специально для 1. ярлыков 2. Класс категории.

Куда писать релиз?

i.Класс Category (UIButton) имеет свой метод dealloc, но он никогда не вызывается.

ii.Поскольку я выпускаю его сразу после добавления в подпредставление, это повлияет на мой щелчок по кнопке.

iii.Когда я должен выпустить этикетки.

Очень запутался в управлении памятью.

1 Ответ

3 голосов
/ 03 апреля 2012

Я отвечу на ваши вопросы:

i.Класс Category (UIButton) имеет свой метод dealloc, но он никогда не вызывается. Поскольку он не полностью освобожден, см. Вопрос ii.

ii.Поскольку я освобождаю его сразу после добавления в подпредставление, это повлияет на мое нажатие кнопки. Нет, поскольку ваше подпредставление теперь является владельцем кнопки, когда вы добавляете его в подпредставление, и вы, и подпредставлениевладельцы, когда вы отпускаете, кнопка теперь принадлежит subView.

iii.Когда я должен выпустить ярлыки. Как только вы добавите его в подпредставление, по той же причине, что и вопрос ii.

Я буду рад уточнить, если вы этого не понимаете.

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