2017-01-23 1 views
3

ld: warning: Некоторые объектные файлы имеют несовместимые определения категории Objective-C. Некоторые метаданные категории могут быть потеряны. Все файлы, содержащие категории Objective-C, должны быть созданы с использованием одного и того же компилятора.Firebase Analytics не был создан. ld: warning: Некоторые объектные файлы имеют несовместимые определения категории Objective-C

Это предупреждение выше появилось, когда я установил Firebase/Core через cocopods. И я считаю, что это вызывает ошибку, потому что мой проект не может читать FIRApp.configure() в приложении deleagate в моем проекте. Я уверен, что загружаю GoogleService-Infor.plist и помещаю его в нужное место в проекте, потому что я сделал это в своем другом проекте раньше (работаю правильно), в моем другом проекте не было предупреждений категорий Objective-C.

Может ли кто-нибудь помочь мне?

Процесс, который я сделал:

  1. Добавить стручок 'Firebase/Core' в podfile проекта, закройте Xcode.
  2. Открыть терминал, перейти в папку целевого проекта, выполнить pod install.

    enter image description here

  3. Появляются предупреждение на терминале (Решение: просто положить $ (наследуется) в условиях сборки ВСЕГДА _..., то решать проблемы) xxxxxx-ebooking [Debug] цель перекрывает ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES сборки [!] , определенную в разделе «Файлы поддержки/подпрограммы поддержки/подпрограммы-xxxxxx-ebooking/Pods-xxxxx-ebooking.debug.xcconfig». Это может привести к проблемам с установкой CocoaPods:

    • Используйте $(inherited) флаг или
    • Удалить параметры сборки от цели.
  4. Появляется предупреждение о Xcode (Это вопросы просто, совершают новые файлы, то предупреждение будет удалено):

    файл: /// Пользователи/YYYYYY/Проекты/xxxxxx_projects/xxxxxx- ebooking/Pods/Target% 20Support% 20Files/Pods-xxxxxx-ebooking/Pods-xxxxxx-ebooking.debug.xcconfig: warning: Отсутствует файл:/Пользователи/yyyyyy/Projects/xxxxxx_projects/xxxxxx-ebooking/Pods/Target Поддержка Файлы/Pods-xxxxxx-ebooking/Pods-xxxxxx-ebooking.debug.xcconfig отсутствует в рабочей копии

  5. Игнорировать процесс проблем 3, 4, потому что его легко решить. Поскольку наиболее проводное предупреждение:

    ld: warning: Некоторые объектные файлы имеют несовместимые определения категории Objective-C. Некоторые метаданные категории могут быть потеряны. Все файлы, содержащие категории Objective-C, должны быть созданы с использованием одного и того же компилятора.

  6. Пожарная аналитика не создана. Пожалуйста, настройте Firebase, вызвав [FIRApp configure]

    Я поместил FIRApp.configure() в свой проект. Но когда я вызываю событие FA на каком-либо представлении, загрузился, он покажет это предупреждение. Я считаю, что это связано с предупреждением Objective-C.

+0

Может быть, это поможет: [http://stackoverflow.com/questions/39665979/xcode-8-objective- c-category-warning] (http://stackoverflow.com/questions/39665979/xcode-8-objective-c-category-warning) –

+0

@RonakChaniyara Спасибо, но я прочитал эту статью раньше. У меня не было этой проблемы в моем коде. И я также не устанавливал Google Analytics ... Так грустно. –

+0

Это даже не ошибка. Это просто предупреждение о наличии несовместимых определений категории Objective-C, и это не вызовет у вас каких-либо проблем ... Вы скопировали файл конфигурации FB в свой проект? – Jad

ответ

3

см при использовании @nonobjc на вашей статической переменной решить проблему

1

Наконец я решил все ошибки, спасибо мой друг поможет мне отладки и стека переполнения сообщества. Вот решение:

В начале я подумал об этом предупреждении «ld: warning: Некоторые объектные файлы имеют несовместимые определения категории Objective-C», вызвало сбой выполнения FIRApp.configure(). Но это заканчивается двумя разными ошибками!

Первая проблема. Проблемы с FIRApp.configure() связаны с тем, что мой проект имеет миграцию ошибок при быстром 2.2 до 3.0. Xcode предложил мне изменить старый 2.2 синтаксис быть частный метод в AppDelegate:

private func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 
    // This method is your app’s first chance to execute code at launch time. 
    FIRApp.configure()   
    return true 
} 

FIRApp.configure() никогда не будет выполняться, потому что это не метод AppDelegate в. Таким образом, изменено на правильный синтаксис будет решать вопросы:

func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
    print("Fire! willFinishLaunchingWithOptions") 
    return true 
} 

Второй вопрос, если, используя приведенную ниже демо синтаксис и ваш проект имеет Objective-C в третьей партии плагин или кода, то это вызовет предупреждение Msgstr "Некоторые объектные файлы имеют несовместимый Objective-C ...". Может быть, потому что синтаксис старый для swift 3.0, поэтому появляется это предупреждение.

class var applicationBuildNumber: String { 
    if let build = Bundle.main.infoDictionary?["CFBundleVersion"] as? String { 
     return build 
    } 
    return "Build Number Not Available" 
} 

Если вы используете функцию класса, то это предупреждение исчезнет:

class func appLocalBuild() -> String { 
    return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String 
} 
Смежные вопросы