Вызов функции Objective C, определенной в файле .h из Swift - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу позвонить это Objective-C функция из кода Swift.

Принятый ответ на этот вопрос показывает, как использоватьObjective-C класс в Swift, а не функция. Во-вторых, реализация Objective-C в нем содержится в файле .m , в то время как тот, который я привел выше, является файлом .h.

Что такоесамый простой способ, которым я могу вызвать функцию Objective C, определенную в файле .h из Swift?

1 Ответ

0 голосов
/ 30 сентября 2019

Как уже упоминалось в комментариях, сначала вам нужно будет выполнить все обычные шаги для использования классов Objective-C из Swift (соединительный заголовок и т. Д.). Тогда вы уже сможете вызывать свою функцию инужно немного доработать, чтобы сделать его более удобным для использования в Swift.

func CopyLaunchedApplicationsInFrontToBackOrder_Swift() -> [[String: AnyObject]]? {
    guard let cfarray = CopyLaunchedApplicationsInFrontToBackOrder() else {
        return nil
    }

    let array = unsafeBitCast(cfarray, to: NSArray.self) as [AnyObject]

    guard let result = array as? [[String: AnyObject]] else {
        return nil
    }

    return result
}

Если ваша функция реализована в файле .h, было бы лучше перенести реализацию в соответствующий файл .m, оставив только .h этообъявление:

@import Foundation;

CFArrayRef CopyLaunchedApplicationsInFrontToBackOrder(void);

Также возможно поместить это объявление в заголовок моста и оставить реализацию в файле .h, но это было бы необычно, делая ваш код более подверженным ошибкам и более сложным в обслуживании.

...