Подкласс не-ARC файл в проект ARC в Xcode 4 - PullRequest
3 голосов
/ 09 января 2012

Я использую не-ARC-код в своем проекте ARC, а именно Three20. Я добавил все соответствующие флаги компилятора, и все работает хорошо. Однако мне нужно создать подкласс некоторых классов Three20, и я не уверен, стоит ли мне добавлять флаг компилятора в мой новый файл для не-ARC, или компилятор выяснит это и добавит соответствующие вызовы релиза.

Просто подведем итог: - проект ARC в XCode 4 - Включает код не-ARC (Three20) - Необходимо создать подкласс того, что определено в файлах не-ARC - Нужно ли мне добавлять звонки? Мне нужно добавить флаг компилятора для не ARC в подклассе?

Ответы [ 2 ]

8 голосов
/ 10 января 2012

Michael

ARC - это технология времени компиляции, которая определяет семантику сохранения / освобождения на основе того, будет ли данный слот в памяти сохраняться после текущего вызова метода / функции. Из-за этого вы можете безопасно смешивать подклассы, используя ARC или нет. Я делаю это все время. Я тоже делаю это по категориям. В отличие от сборки мусора, ARC сфокусирован только на пространстве хранения в каждом методе / функции. Кстати, большинство платформ iOS пока еще не используют ARC. Следовательно, у любого подкласса, который вы создаете для каркасного класса, есть эта «проблема», и это просто не проблема.

Чтобы ответить на ваш конкретный вопрос:

Просто подведем итог: - Проект ARC в XCode 4 - Включает код не-ARC (Three20) - Нужно создать подкласс для чего-то определенного в файлах, отличных от ARC. нужно добавить выпуск звонков? - Нужно ли добавлять флаг компилятора для не ARC в подклассе?

Ваш подкласс не-ARC суперкласса может быть либо ARC, либо нет. Поскольку для вашего приложения по умолчанию установлено значение ARC, вам не нужно ничего делать с подклассом.

Andrew

2 голосов
/ 09 января 2012

Да, вам нужно добавить не-ARC флаг (-fno-objc-arc) и retain / release вызовы.

Не добавляйте его, если ваш подкласс действительно использует ARC, но я рекомендую против этого, потому что это просто вызовет проблемы.

...