Подкласс не-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, но я рекомендую против этого, потому что это просто вызовет проблемы.

Другие вопросы по тегам