在 Objective-C 中使用 Swift 类

第 1 步:创建新的 Swift 类

.swift 文件添加到项目中,并将其命名为 MySwiftObject.swift

MySwiftObject.swift

import Foundation

class MySwiftObject : NSObject {

    var someProperty: AnyObject = "Some Initializer Val"

    init() {}

    func someFunction(someArg:AnyObject) -> String {
        var returnVal = "You sent me \(someArg)"
        return returnVal
    }

}

第 2 步:将 Swift 文件导入 ObjC 类

SomeRandomClass.m

#import "<#YourProjectName#>-Swift.h"

文件:<#YourProjectName#>-Swift.h 应该已经在项目中自动创建,即使你看不到它。

第 3 步:使用你的类

MySwiftObject * myOb = [MySwiftObject new];
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
myOb.someProperty = @"Hello World";
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
NSString * retString = [myOb someFunction:@"Arg"];
NSLog(@"RetString: %@", retString);

注意:

1. CodeCompletion 的表现不如我所希望的那样准确。在我的系统上,运行快速构建 w /“cmd + r”似乎有助于 Swift 找到一些 Objc 代码,反之亦然。

2. 如果你将 .swift 文件添加到较旧的项目并收到错误:dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib,请尝试完全重新启动 Xcode。

3. 虽然最初可以通过使用 @objc 前缀在 Objective-C 中使用纯 Swift 类,但在 Swift 2.0 之后,这已不再可能。有关原始说明,请参阅编辑历史如果在将来的 Swift 版本中重新启用此功能,则答案将相应更新。