Почему есть предупреждение об использовании ARC в библиотеках Objective-C? - PullRequest
2 голосов
/ 10 февраля 2012

Я довольно новичок в Objective-C, и в настоящее время я изучаю управление памятью. Я хотел бы использовать ARC для наших общих библиотек, но в документации Advanced Memory Management есть немного загадочное предупреждение об этом:

Если вы планируете писать код для iOS, вы должны использовать явное управление памятью (предмет данного руководства). Кроме того, если вы планируете написание библиотечных подпрограмм, плагинов или общего кода - кода, который может быть загружен либо в сборщик мусора, либо в сборщик мусора - вы хотите написать свой код, используя описанные методы управления памятью на протяжении всего этого руководства.

Я предполагаю, что первое предложение устарело, поскольку ARC, кажется, поддерживается в iOS 4 и более поздних версиях, но второе предложение, по-видимому, подразумевает, что для разделяемых библиотек мы должны использовать MRR, а не ARC.

Мне не ясно, почему это будет проблемой, так как я бы подумал, что после компиляции не должно быть разницы в вызове кода, поскольку вызовы подсчета ссылок были бы вставлены компилятором. Есть ли проблема с использованием ARC для разделяемых библиотек?

1 Ответ

2 голосов
/ 10 февраля 2012

Этот цитируемый раздел неуклюже сформулирован и, вероятно, не изменился по сравнению с тем, когда в этом руководстве просто проводится различие между ручным сохранением-выпуском и сборкой мусора.

iOS не поддерживает и, вероятно, никогда не будет поддерживать сборку мусора.Как вы уже заметили, iOS 4 полностью поддерживает ARC.Кроме того, ARC спроектирован таким образом, что не возникает реальных проблем, связанных с смешиванием кода ARC с кодом, не являющимся ARC (в отличие от кода со сборкой мусора, который не имеет такой роскоши).ARC - это рекомендуемый способ писать весь новый код в будущем, включая код совместно используемой библиотеки, если вам не нужно ориентироваться на версии iOS до iOS 4.

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

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