我正在为现有的Objective-C项目(通过Cocoapods,Carthage等分发)中添加诸如NS_SWIFT_NAME
之类的Swift注释,以便在不强制ObjC用户添加的情况下提高Swift的互操作性。 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运行时。
编辑:更新了更好的代码示例。 Source