Поддерживается ли сборка мусора для приложений iPhone? - PullRequest
12 голосов
/ 06 января 2009

iPhone поддерживает сборку мусора? Если это так, то каковы альтернативные способы выполнения операций, которые выполняются с использованием комбинации +alloc и -init:

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
UIImage *originalImage = [[UIImage alloc] initWithData:data];
detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailView bundle:[NSBundle mainBundle]] autorelease];

... и другие команды. Заранее благодарю за любую помощь или направление, которое вы можете предоставить.

Ответы [ 5 ]

32 голосов
/ 06 января 2009

Нет. Сборка мусора слишком велика для устройства с ограниченным сроком службы и т. Д.

Вы должны программировать всегда с учетом шаблона alloc/release.

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
...
[xmlParser release];

или (не подходит для любой ситуации)

NSXMLParser *xmlParser [[[NSXMLParser alloc] initWithData:xmlData] autorelease];

Надеюсь, это поможет!

7 голосов
/ 06 января 2009

Нет, сборка мусора в настоящее время не поддерживается на iPhone. Вам нужно использовать alloc / release / autorelease.

2 голосов
/ 13 января 2010

Mono Touch имеет сборку мусора и работает на iPhone OS.

2 голосов
/ 07 января 2009

Обратите внимание, что отсутствие сборки мусора означает, что слабые ссылки также не поддерживаются.

1 голос
/ 15 октября 2010

Во всем обсуждении никто не говорит о языке Java, в Java сборка мусора встроена в язык, поэтому она неявно доступна в Android, J2ME и Blackberry :), где, как и в Objective-C, это необязательно, поэтому в iPhone GC недоступен.

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