2015-09-08 6 views
4

У меня есть приложение, написанное в Swift, исключительно в Swift, у которого никогда не было класса Obj-C, нет файлов Obj-C или заголовков мостов.Использование протокола Objective-C из моей службы XPC в моем приложении Swift

Чтобы добавить некоторые функции, не влияя на права моего приложения, я пытаюсь добавить службу XPC - я создал это в Xcode, а шаблон для служб XPC в Xcode - только Obj-C.

Это нормально, я написал свое обслуживание в Obj-C, но теперь, когда я хочу позвонить в службу через NSXPCConnection, я должен настроить интерфейс для этого, и для этого мне нужно обратиться в мой код приложения Swift, к протоколу Obj-C, который я написал для своей цели XPC.

Как это сделать? Я не могу просто добавить «Protocol.h» в свою целевую программу, у нее нет правила для заголовка C. Все остальные комментарии, которые я нашел по этому поводу, похоже, применимы к привязке к протоколу в каркасе или общей цели ...

+0

Мне совершенно любопытно, как вам удастся выполнить эту работу, и можете просто предложить следующее: добавьте 'Protocol.h' в ваше ** приложение Swift **, добавьте' Bridging-Header' в это приложение (проще всего создать, затем удалить класс Obj-C и щелкнуть * Create Bridging Header * при появлении запроса) и '#import" Protocol.h "' в заголовках мостов. Затем вы сможете выбрать класс ** Swift **, наследующий «NSObject», и заставить его принять «Протокол». – SwiftArchitect

+0

Я решил сейчас просто добавить функциональность в приложение, поставив его в XPC, было бы неплохо, но это не обязательно. Мне не хватает Xcode-do, необходимого для создания XPC-сервиса в быстром без шаблона, я подожду, пока Apple не вытащит его. Я попробовал пару разных вещей, и ничего не работает ... – iluvcapra

+0

Знаешь, что я только что создал, лемми, убедитесь, что это работает, и я напишу это. – iluvcapra

ответ

3

Хорошо, поэтому я выяснил решение.

1) Удалена служебная программа и файлы протокола Obj-C.

2) Написал мой протокол и расширенные классы объектов в swift. Убедитесь, что они могут быть экспортированы в Obj-C.

3) Добавлен файл protocol.swift в цель моего приложения. Добавлено #import "Service-Swift.h" к моей службе main.m.

Итак, теперь мой объект XPC реализован в Swift, мой объектный протокол работает быстро, единственным неоткрытым файлом является мой основной XPC.