У меня есть существующий проект (EP), написанный в Objective C. Наша команда решила разработать новый проект (NP) в Swift и добавить существующий проект (написанный в Objective C) в качестве функции в новом проекте ( показать существующее приложение на одной вкладке в качестве функции).
Вот что я сделал:
Создан новый проект в Swift и добавлен существующий проект в качестве подпроекта в Xcode
На этапах сборки нового проекта я добавил существующий проект (продукт сборки) в качестве целевых зависимостей.
Создал Bridging Header для проекта Swift (новый project-Bridging-Header.h) и передал заголовок в Objective-C Bridging header как NP / NP-Bridging-Header .h в Настройки сборки нового проекта.
В пути поиска заголовка я добавил $ (SRCROOT) / Path_To_Sub_Project и установил его как рекурсивный. (как в проекте, так и в цели нового проекта)
Под Другие флаги компоновщика , добавлено -all_load и -ObjC .
Добавлены необходимые файлы Objective-C в заголовочном файле моста.
Проблема:
В новом проекте, когда я пытаюсь сослаться на целевой класс c, я получаю справочную проблему.
ViewController.swift
//viewdidload
let vc = HomeViewController() //This is an objective c class.
HomeViewController распознается Xcode, так как он автоматически заполняется во время набора текста, и Xcode не выдает никаких проблем в реальном времени. Но когда я пытаюсь построить новый проект, я получаю следующую ошибку.
Ошибка:
"_OBJC_CLASS_$_HomeViewController", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Цените ваше время.