Несовместимость nsautoreleasepool nsautoreleasepool
-
18-09-2019 - |
Вопрос
Согласно с Еще один стек переполненный пост а drain
Сообщение-это звонок только для Apple:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello");
[pool drain];
return 0;
Безопасно ли заменить drain
с release
? Я пытаюсь перенести приложение Objective-C для запуска на Linux (Ubuntu на данный момент). Должен ли я сдаться еще до того, как я начал? (У меня уже есть проблемы, пытаясь получить NSURLConnection
работающий)
Решение
Из документации Apple о drain
:
...] Этот метод ведет себя так же, как релиз. [...
Таким образом, истощение пула с авторелиасом означает, что сделку его неизбежно. На мой взгляд, Apple должна установить drain
так как это только создает путаницу.
Но:
Особые соображения:
В собрании мусора,release
это неоперация, поэтому, если вы не хотите дать коллекционеру подсказку, важно использоватьdrain
В любом коде, который может быть составлен для мусорной среды.