Поддерживается ли сборка мусора для приложений iPhone?
Поддерживает ли iPhone сбор мусора? Если это так, то каковы альтернативные способы выполнения операций, которые выполняются с использованием комбинаций +alloc
и -init
:
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
UIImage *originalImage = [[UIImage alloc] initWithData:data];
detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailView bundle:[NSBundle mainBundle]] autorelease];
... и другие команды. Заранее благодарю вас за любую помощь или руководство, которое вы можете предоставить.
Ответы
Ответ 1
Нет. Сбор мусора слишком велик, чтобы сократить время автономной работы и т.д. На устройстве.
Вы должны программировать всегда с учетом шаблона alloc/release
.
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
...
[xmlParser release];
или (не подходит для каждой ситуации)
NSXMLParser *xmlParser [[[NSXMLParser alloc] initWithData:xmlData] autorelease];
Надеюсь, это поможет!
Ответ 2
Нет, сбор мусора в iPhone сейчас не поддерживается. Вам нужно использовать alloc
/release
/autorelease
.
Ответ 3
Обратите внимание, что отсутствие сбора мусора означает, что слабые ссылки также не поддерживаются.
Ответ 4
Mono touch имеет сбор мусора и работает на iPhone os.
Ответ 5
Во всём обсуждении никто не говорит о языке Java, в Java коллекция Garbage встроена в язык, поэтому она неявно доступна в Android, J2ME и Blackberry:), где, как и в Objective-C, она является необязательной, поэтому в iPhone GC недоступен.