在 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 版本中重新啟用此功能,則答案將相應更新。