Использование инфраструктуры Objective C, которая находится внутри инфраструктуры Swift, в проекте Xamarin iOS
- У меня есть Objective C Framework. (Эта структура работает должным образом с проектом Swift)
- Тогда у меня есть рамки Swift. Эта структура использовала ранее упомянутую структуру Objective C. (Эта среда Swift также работает в проекте Swift)
- Сейчас я пытаюсь использовать этот фреймворк Swift в проекте Xamarin для iOS.
- Я создал проект Binding Library в своем проекте Xamarin для iOS, и в соответствии с Native Reference я добавил как эти файлы инфраструктуры Swift, так и файлы Objective C.
- Я также обновил файл ApiDefinition.
Но когда я запускаю приложение, оно запускается в телефоне и завершается без каких-либо ошибок. Я рад, если приложение упало с ошибкой. Но это не так, и я сейчас ничего не понимаю. Какие-нибудь мысли?
Ниже показано, как я пытаюсь получить доступ к методам в этих рамках в моем проекте Xamarin iOS
using BindingSwift;
// More codes here
public override void ViewDidLoad()
{
base.ViewDidLoad();
var myClass = new AroshaMathPerformer();
var result = myClass.DoTheMath;
Console.WriteLine("# Result = " + result);
}
Но, если я добавлю точку останова, она даже не сработает во время выполнения до выхода из приложения.
1 ответ
Если предположить, что все, что вы сделали, находится в вопросе, то ожидается, что это не сработает. Библиотеки Swift официально не поддерживаются в Xamarin.iOS. Некоторые люди заставили их работать с этими шагами: https://medium.com/@Flash3001/binding-swift-libraries-xamarin-ios-ff32adbc7c76
В таком случае вы можете найти настоящую причину, перейдя в
Настройки -> Конфиденциальность -> Аналитика -> Аналитические данные -> И найдите файл журнала с идентификатором вашего пакета и датой / временем возникновения сбоя.
Показанная мне ошибка была связана с @rpath/, но на самом деле она была решена после подписания пакета с действующим профилем подготовки.
Для тех, кому интересно, вы можете посетить здесь, чтобы узнать мой опыт реализации всего этого сценария, упомянутого в заголовке.