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