博客
关于我
oc工程中oc、swift混编代码打包成静态framework踩坑笔记
阅读量:407 次
发布时间:2019-03-05

本文共 1428 字,大约阅读时间需要 4 分钟。

参考资料:
 
两天时间探索,期间不知道遇到了多少问题,各种google和Stack Overflow,甚至都求助了群友的力量。期间也想过放弃,还好有一颗不甘的心。终于成功了!
开心,哈哈,希望有缘人遇到同样问题的话,下面的一些记录可以帮助到你。
成功后,静态库里swift和OC代码可以被OC工程中OC和swift类使用。
 
一、编译库时,选debug可以成功,但是release不成功
    原因:上面文章中忘记说要把库设置为static的步骤了。
    正确方式:在静态库的buildsetting搜索mach,选择  Static Library
    

 

二、stroyboard放到bundle中无法被成功加载
    需要在绑定了控制器的storyboard的CustomClass处,
指定Module为包含对应类的静态库,同时不勾选Inherit Module From Target
 
三、图片放到bundle中格式不对
    设置 Build Setting 中的 COMBINE_HIDPI_IMAGES 为 NO,否则 Bundle 中的图片就是 tiff 格式了。
 
四、swift代码无法被外界OC代码访问
    通过相关群里与群友交流,发现是需要在被访问的swift类前加
@objc public。如果需要继承swift的类,可能需要加@objc open
 
五、swift代码的协议方法无法回调
   Xcode很傻的提示在协议方法前加@nonobjc,很坑!后面在我快要放弃打包探索之路时,不甘心把同样代码以非静态库形式集成到工程里,发现居然仍然有协议方法不回调的问题。于是尝试
把@nonobjc改为了public,居然就可以了!于是又使用git相关命令reset到静态库的某个tag版本。发现这么改之后整个流程就通了!
 
六、多target引用相同和不同第三方库问题
   可以通过cocopods解决此问题。例如:
  
1 # Uncomment the next line to define a global platform for your project 2 platform :ios, '11.3' 3 abstract_target 'Shows' do 4  5   # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6   use_frameworks! 7    8   #都要用:---------------------- 9   pod 'iConsole',    '~> 1.5.3'10 11 12   target 'HTMCommon' do13   end14   15   target 'HTMImgRecognise' do16 17   end18   19   target 'ZWEasyWalkMap' do20     21     # Pods for ZWEasyWalkMap22     pod 'Realm', '~> 3.13.1'23   end24   25   target 'ZWEasyWalkMap-SHXJD' do26     pod 'Realm', '~> 3.13.1'27   end28 29 30 end
 
😔,踩坑了两天,一把辛酸泪啊!略作记录,以表欣慰。

转载地址:http://mcmzz.baihongyu.com/

你可能感兴趣的文章
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>