Swift和Objective-C混合编译

1,在已有的Swift项目添加OC文件,或者在已有的OC项目添加Swift文件,会提示是否创建Objective-C Bridging Header。

2,点击“Create Bridging Header”,会创建bridge文件,系统默认的文件名是项目名+bridge+Header.h,并且系统默认会在 Build Settings->Objective-C Bridging Header 添加bridge文件路径引用。

如果没有选择系统默认提示“Create Bridging Header”, 只需要自己创建一个.h文件,在Build Settings ->Objective-C Bridging Header设置路径参数就行了。

3,如果需要在 Swift 中使用OC的代码或者库,只需要在XXX-bridge-Header.h文件中 import 相应的OC代码或者库的头文件即可。

#import "HttpRequestHandle.h"

在Swift文件中引用OC类

    func LoadImageList() {
        let dict :NSMutableDictionary = NSMutableDictionary()
        dict.setObject(mUserID ?? "", forKey: "userid" as NSCopying)
        dict.setObject(mArchiveID ?? "", forKey: "caseid" as NSCopying)
        HttpRequestHandle.getImageList(dict, success: { (response: Any?) in
            self.mPicList.removeAll()
            let newarray = response as! Array<Any>
            for subDic in newarray {
                let newdic = subDic as! Dictionary<String, Any>
                self.mPicList.append(newdic["thumbimg"] as! String)
            }
            NSLog("mPicList:%@", self.mPicList)
            self.reloadData()
        }, root: self)
    }

4,找到targets->build settings->Objective-C Generated Interface Header Name,获得Swift对应的桥接头文件,默认的文件名是项目名-Swift.h。

XXX-Swift.h 文件不会出现在项目中,而是由Xcode自动生成,可以在build路径下找到相应项目的XXX-Swift.h文件。

在OC文件中添加XXX-Swift.h的引用

#import "TestDemo-Swift.h"

在OC中调用Swift

- (void)viewDidLoad {
    [super viewDidLoad];
    TestView *view = [[TestView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:view];
}

猜你喜欢

转载自blog.csdn.net/watson2017/article/details/84638042