Я работаю над добавлением аннотаций Swift, таких как NS_SWIFT_NAME
, в свой существующий проект Objective-C (распространяемый через. Cocoapods, Carthage и т. Д.), Чтобы я мог улучшить совместимость Swift, не заставляя пользователей ObjC добавлять Swiftвремя выполнения.
@interface TestObject : NSObject
- (void)getFirstName:(NSString **)firstName;
@end
Какие действительно уродливые типы Swift:
func getFirstName(firstName: AutoreleasingUnsafeMutablePointer<NSString?>)
Я хочу работать с аннотацией NS_REFINED_FOR_SWIFT
:
@interface TestObject : NSObject
- (void)getFirstName:(NSString **)firstName NS_REFINED_FOR_SWIFT;
@end
Добавление расширений Swift для большего количества имен методов Swifty:
public extension TestObject {
func getFirstName() -> String? {
var firstName: NSString? = nil
__getFirstName(&firstName)
return firstName as String?
}
}
Есть ли способ включить это расширение для тех разработчиков, которые имеют код Swift, но исключают его из кодовых баз только Objective-C?Я не хочу добавлять среду выполнения Swift без необходимости.
РЕДАКТИРОВАТЬ: Обновлено с лучшим примером кода. Источник