当前位置:首页 » 《关注互联网》 » 正文

iOS开发笔记之九十——在OC项目中支持Swift_iOS开发笔记

24 人参与  2021年08月23日 07:23  分类 : 《关注互联网》  评论

点击全文阅读


*****阅读完此文,大概需要5分钟******

这个过程不复杂,但是有些问题遇到了可能就会捣弄很久,特此输出此文,希望可以帮助大家快速解决相应的问题。

一、配置步骤

1、主项目中添加工程名-Bridging-Header.h

这一步可以如其他文章介绍的那样,先添加Test.swift然后,Xcode会提醒你添加对应的-Bridging-Header文件的。

2、配置工程

  • Build Settings设置Defines Module为Yes
  • 设置Podfile,如下:
use_modular_headers!
use_frameworks! :linkage => :static
  • Xcode设置Swift版本为最新

二、注意事项以及可能遇到的问题

1、OC中调用Swift代码

import Foundation
@objcMembers
public class MDSwiftDemoViewController : UIViewController {
    
    public override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = UIColor.white
    }
    func show() {
        print("hello swift...")
    }
}

注意在对应的Swift类前面添加public修饰

如果在OC的调用Swift代码是夸Pod库调用,需要添加对应的引用如下:

#import <SwiftDemoProject/SwiftDemoProject-Swift.h>

2NSClassFromString等使用注意

如果在OC代码中直接NSClassFromString(“MDSwiftDemoViewController”),得到的结果将会是nil。因为在OC中Swift类中的所有类的接口都转到了一个叫Project_Example-swift.h的头文件中,其中的类名和方法实际都已经改变了,已经不是原来的类名了。解决方法如下:

import Foundation
@objc(MDOCSwiftDemoViewController)
@objcMembers
class MDSwiftDemoViewController : UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = UIColor.white
    }
    func show() {
        print("hello swift...")
    }
}

在OC代码中调用MDOCSwiftDemoViewController类即可。

NSClassFromString(“MDOCSwiftDemoViewController”)

3、工程出现”<A/A.h> file not found”报错

参考解决:

检查对于的podspec文件对A的依赖,由于Podfile中配置了static,未添加依赖会导致的头文件引用找不到。

4、遇到  library not found for -lAFNetworking”报错

参考解决:

Build Setting -> Other Linker Flag 中的引用,找到移除之后的框架,删除引用即可

三、参考文档:

https://www.jianshu.com/p/57fedd74763d


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/25933.html

添加  调用  引用  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1