使用NS_REFINED_FOR_SWIFT而不包括Swift Runtime

时间:2018-10-10 17:32:28

标签: ios objective-c swift xcode runtime

我正在为现有的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

0 个答案:

没有答案