Хотя прямой стимул недоступен для Swift, это может быть достигнуто относительно элегантно с Objective-C и категориями. MyClass
должен по-прежнему наследоваться от NSObject
и иметь метод class / static swiftyLoad
, который вызывается из Objective-C в MyClass.m
, который вы включаете в источники компиляции рядом с MyClass.swift
:
# MyClass.swift
import Foundation
public class MyClass: NSObject
{
@objc public static func swiftyLoad() {
Swift.print("Rock 'n' roll!")
}
}
# MyClass.m
#import "MyProject-Swift.h"
@implementation MyClass (private)
+ (void)load { [self swiftyLoad]; }
@end
]
. Лучшая часть не нужно возиться с перемычками заголовков или чем-нибудь еще, она просто работает. Есть несколько исправлений, особенно при использовании этого подхода в статических библиотеках, ознакомьтесь с полным сообщением на Medium для деталей! ✌️
Это широко обсуждаемая тема, и есть много вещей, которые нужно учитывать, вы должны сначала изучить документацию, указанную в следующих ссылках: