«Переопределение категории« как другой вид символа »и конфликт с именами классов выполнения Objc

У меня есть класс в Objective-C:

@interface Category : NSObject { // ... } 

Все было хорошо, и я использовал этот класс без проблем в трех разных проектах.

Однажды я решил создать тестовую цель для одного проекта. Затем произошло странное: компилятор отказывается компилировать с этой ошибкой:

 Redefenition of 'Category' as a different kind of symbol 

он также указал на runtime.h с

 typedef struct objc_category *Category; 

Ну, это разумно.

Однако я не могу понять, почему это позволило мне использовать этот класс раньше и какова разница между исходной целью и целевым объектом тестирования. Я проверил Deploy target , iOS SDK , все макросы, пути заголовков, #import <objc/runtime.h> и классы в обеих целях – это почти то же самое.

Я не хочу реорганизовывать имя этого класса из-за использования его в многократных проектах, так что может быть причиной такого поведения?

2 Solutions collect form web for “«Переопределение категории« как другой вид символа »и конфликт с именами классов выполнения Objc”

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

Вероятно, вы импортируете файл, который импортирует <objc/runtime.h> в какой-то момент. В зависимости от того, какая разница между тестовой мишенью и обычной целью, при тестировании Xcode работает, вводя символы в пакет. Там могут быть некоторые различия в дескрипции кода и видимости символов, которые могли бы объяснить такую ​​ошибку.

Неудивительно, что Apple рекомендует префикс классов с 2 или 3 буквами

Хотя вы должны сделать то, что говорит @Olotiar в своем ответе, есть быстрое решение.

Перейдите в свой проект « Настройки сборки» , найдите « Включить модули (C и Objective-C) » и установите значение « НЕТ» .

Interesting Posts

Как настроить интервал строк UILabel программно в Swift?

iOS 9.2: Не удается доверять приложению вручную, нет опции профиля

Как установить параметры компоновщика для плагина Cordova?

Устанавливать текст без подчеркивания

FBSDKCoreKit.framework / FBSDKCoreKit: нет подходящей архитектуры в универсальной обертке

Как использовать inputAccessoryViewController в iOS 8

Как отображать индикатор активности в середине экрана iphone?

iOS отклоняет UIAlertController в ответ на событие

Компиляция приложений iOS и MacInCloud / аналогичные

Могу ли я читать анимированный GIF из UIActivityViewController и собственного UIActivityTypePostToTwitter?

FlyoutNavigation – iOS

Почему cv :: meanStdDev не работает с ошибкой при отладке

Xcode 5 – вне контроля использования ЦП и памяти

Передача данных контроллеру вида, который UINavigationController указывает на

Не удалось завершить настройку для сохранения во время асинхронной инициализации iCloud

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.