Подкласс не-ARC файл в проект ARC в Xcode 4
Я использую не-ARC-код в своем проекте ARC, а именно Three20. Я добавил все соответствующие флаги компилятора, и все работает хорошо. Однако мне нужно создать подкласс некоторых классов Three20, и я не уверен, должен ли я добавить флаг компилятора в мой новый файл для не-ARC или компилятор выяснит это и добавит соответствующие вызовы релиза.
Напомним, что: - Проект ARC в XCode 4 - Включает код не-ARC (Three20) - Нужно создать подкласс того, что определено в файлах не-ARC - Нужно ли добавлять вызовы выпуска? Мне нужно добавить флаг компилятора для не ARC в подклассе?
2 ответа
Майкл,
ARC - это технология времени компиляции, которая определяет семантику сохранения / освобождения на основе того, будет ли данный слот в памяти сохраняться после текущего вызова метода / функции. Из-за этого вы можете безопасно смешивать подклассы, используя ARC или нет. Я делаю это все время. Я тоже делаю это по категориям. В отличие от сборки мусора, ARC сфокусирован только на объеме памяти в каждом методе / функции. Кстати, большинство платформ iOS пока еще не используют ARC. Следовательно, любой подкласс класса фреймворка имеет эту "проблему", и это просто не проблема.
Чтобы ответить на ваш конкретный вопрос:
Напомним, что: - Проект ARC в XCode 4 - Включает код не-ARC (Three20) - Нужно создать подкласс того, что определено в файлах не-ARC - Нужно ли добавлять вызовы выпуска? Мне нужно добавить флаг компилятора для не ARC в подклассе?
Ваш подкласс не-ARC суперкласса может быть или ARC или нет. В качестве настройки по умолчанию для вашего приложения используется ARC, вам не нужно ничего делать с вашим подклассом.
Эндрю
Да, вам нужно добавить не-ARC флаг (-fno-objc-arc
) а также retain
/ release
звонки.
Не добавляйте его, если ваш подкласс действительно использует ARC, но я рекомендую против этого, потому что это просто вызовет проблемы.