Использование Objective-C typedef void в Swift - PullRequest
0 голосов
/ 25 апреля 2019

Я использую Objective-C API в новой среде Swift. По большей части все работает отлично, но я застреваю в проблеме с typedef.

API имеет определение типа, определенное как:

typedef void* TESTHANDLE;

Обычно в Objective-C я бы просто использовал это как объявление любой переменной:

TESTHANDLE NewTestHandle;

Изображение ниже является примером из проекта Objective-C, который использует это.

enter image description here

Я хочу объявить новую переменную TESTHANDLE в Swift, так же, как я делал выше. Мне нужно присвоить значение TestHandle позже в коде, который имеет тип TESTHANDLE.

enter image description here

Читая об этом, я вижу, что typealias - теперь путь, НО я не могу изменить API.

Как я могу использовать этот typedef из Objective-C в Swift?

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете сделать это, просто добавив соединительный заголовок в ваш проект.

На примере следующего класса Objective C:

enter image description here

  1. Добавьте файл заголовка в свой проект.Соглашение об именах по умолчанию: -Bridging-Header.h

  2. Импортируйте заголовки Objective C API в этот заголовок с помощью оператора #import.

enter image description here

В рамках проекта Build Setting установите этот заголовок как мост между вашим Objective-C и Swift, указав его путь в "Objective-C Bridging Header".Относительные пути к вашему .xcodeproj будут просто работать.

enter image description here

Используйте тип в Swift как обычно

enter image description here

Однако имейте в виду, что все такие типы будут рассматриваться как UnsafeRawPointer илиUnsafeMutableRawPointer в Свифте.

...