在 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()
无需显式导入,这就是桥接头的用途。