在 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()

无需显式导入,这就是桥接头的用途。