在 Swift 中使用 Objective-C 類

如果你有要使用的現有類,請執行步驟 2 ,然後跳到步驟 5 。 (在某些情況下,我必須在舊的 ObjC 檔案中新增一個明確的 #import <Foundation/Foundation.h

第 1 步:新增 Objective-C 實現 - .m

.m 檔案新增到你的類,並將其命名為 CustomObject.m

第 2 步:新增橋接標頭

新增 .m 檔案時,你可能會遇到如下提示:

在此處輸入影象描述

單擊

如果你沒有看到提示或意外刪除了橋接標題,請在專案中新增一個新的 .h 檔案,並將其命名為 <#YourProjectName#>-Bridging-Header.h

在某些情況下,特別是在使用 ObjC 框架時,你不會顯式新增 Objective-C 類,Xcode 也無法找到連結器。在這種情況下,建立如上所述命名的 .h 檔案,然後確保在目標的專案設定中連結其路徑,如下所示:

在此處輸入影象描述

注意

最好使用 $(SRCROOT) 巨集連結你的專案,這樣如果你移動專案,或者使用遠端倉庫與其他人一起工作,它仍然可以工作。$(SRCROOT) 可以被認為是包含 .xcodeproj 檔案的目錄。它可能看起來像這樣:

$(SRCROOT)/Folder/Folder/<#YourProjectName#>-Bridging-Header.h

第 3 步:新增 Objective-C 標頭 - .h

新增另一個 .h 檔案,並將其命名為 CustomObject.h

第 4 步:構建 Objective-C 類

CustomObject.h

#import <Foundation/Foundation.h>

@interface CustomObject : NSObject

@property (strong, nonatomic) id someProperty;

- (void) someMethod;

@end

CustomObject.m

#import "CustomObject.h"

@implementation CustomObject 

- (void) someMethod {
    NSLog(@"SomeMethod Ran");
}

@end

第 5 步:向 Bridging-Header 新增類

YourProject-Bridging-Header.h

#import "CustomObject.h"

第 6 步:使用你的物件

SomeSwiftFile.swift

var instanceOfCustomObject: CustomObject = CustomObject()
instanceOfCustomObject.someProperty = "Hello World"
println(instanceOfCustomObject.someProperty)
instanceOfCustomObject.someMethod()

無需顯式匯入,這就是橋接頭的用途。