iOS遇到的问题:OC与swift混编造成的 Failed to emit precompiled header

当我接手一个OC与swift混编的项目的时候,其实我是拒绝的。哎,没有办法啊,只能干啦。

pod完以后有很多问题,最难的问题就是这个了,

其实是由于他Podfile文件里面有use_frameworks!这样一句话,首先,我们先说一下他的作用。

A、用cocoapods 导入swift 框架 到 swift项目和OC项目都必须要 use_frameworks!
B、使用 dynamic frameworks,必须要在Podfile文件中添加 use_frameworks!

use_frameworks! -> dynamic frameworks 方式 -> .framework
#use_frameworks! -> static libraries 方式 -> .a

关于Library 和 Framework 可以参考:
http://blog.lanvige.com/2015/...

用cocoapods导入OC框架到swift项目:

(1)#use_frameworks! 必须创建头文件,在头文件里面 #import "AFNetworking.h"

(2)use_frameworks! 如果有头文件,在头文件里面 #import "AFNetworking/AFNetworking.h",其它swift文件中用到不需要再import;如果没有头文件,则在每个需要用到的swift文件里 import AFNetworking。

用cocoapods导入swift框架到swift项目:

(1)必须use_frameworks!

(2)不需要头文件,在需要用到框架的swift文件里 import Alamofire

用cocoapods导入OC框架到OC项目:

(1)#use_frameworks! 在需要用到的文件里 #import "AFNetworking.h";也可以通过pch文件,用法类似swift中的头文件。

(2)use_frameworks! 与(1)类似,用法上没有区别。

用cocoapods导入swift框架到OC项目:不考虑

总结:

(1)用swift项目考虑到会使用 OC 和 swift 两种第三方框架,所以Podfile中使用swift项目默认的 use_frameworks! 更为妥当,并且frameworks动态链接库具有一定的优势。

(2)可以建立一个Bridge头文件,用来import那些OC框架的.h文件:#import "xxx/xxx.h"。或者不建头文件,像swift框架一样,直接在需要用到的swift文件中import。

所有我的问题怎么解决呢?

在这个里面,吧缺少的framework文件重新加一遍,如:

但是编译以后还是报错,我们看一下

原来是pods__.framework文件的问题。

删除他然后编译一下,果然就没有问题。

原文地址:https://www.cnblogs.com/lys-iOS-study/p/10315875.html

时间: 2024-11-06 03:41:53

iOS遇到的问题:OC与swift混编造成的 Failed to emit precompiled header的相关文章

OC跟Swift混编

OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue  独立博客:http://mengxiangyue.com 最近公司的项目开始计划使用Swift,由于原先的工程都是使用OC编写的,不可能一下全部转换成Swift,所以采用OC与Swift混编的方式是最好的选择.这篇文章只是一个简单的介绍,并没有太高深的知识. 我新建了一个演示的OC工程,当然你可以使用你已经存在的OC的工程.如果我们想要在OC工程

Swift语言学习之OC和Swift混编

本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里是创建的Swift语言的工程,工程名SwiftTest 2.在工程中代码目录下创建一个oc的类,选择oc语言, 会出一个对话框,选择YES          3.这时会在工程里看到下图这样一个头文件           4.在这个头文件里添加你的OC文件的.h文件,就可以在任意swift文件中自行调

初探swift语言的学习笔记九(OC与Swift混编)

swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. 先中简单的入手,先研究在同一个工程目录下混合使用的情况. 为了演示.先准备两个类 第一个是swift语言写的类,文件名为 act.swift import Foundation class Act : NSObject { func hasAct(tag:Int) -> String { swit

关于oc和swift混编 框架framework时 只能在真机运行或只能在模拟器单独运行的解决方案

问题描述: 关于oc和swift混编 框架framework时 只能在真机运行或只能在模拟器单独运行的解决方案. 问题提供者:by 走跑 解决方案: 首先制作swift版本的framework(Cocoa Touch Framework)取名FirstMixed 1. 工程里面新建一个SwiftView.swift文件,继承UIView,class必须是public修饰 2. 生成真机和模拟器通用的FirstMixed.framework参考这篇文章的制作通用动态库部分,这里面有教如何生成真机和

IOS --- OC与Swift混编

swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. 先中简单的入手,先研究在同一个工程目录下混合使用的情况. 为了演示.先准备两个类 第一个是swift语言写的类,文件名为 act.swift   [cpp] view plaincopy在CODE上查看代码片派生到我的代码片 import Foundation    class Act : NSO

IOS --- OC与Swift混编(转)

原文地址:http://blog.sina.com.cn/s/blog_8d1bc23f0102v5tl.html swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. 先中简单的入手,先研究在同一个工程目录下混合使用的情况. 为了演示.先准备两个类 第一个是swift语言写的类,文件名为 act.swift import Foundation cl

iOS代码规范(OC和Swift)

下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button1.button2.button3,全文没有注释,去看代码逻辑才能知道这三个按钮的意思,我也是醉了! 下面的规范 有的定的比较死,大家可以根据自己团队的风格进行修改.该文章主要是OC的代码规范,有几个是Swift的规范. OC和Swift的代码规范如下: 一.VC生命周期 模块排列顺序 1. 注意

oc和swift混编关键

1.桥接头文件——xx-Bridge-Header.h swift和oc混编连接点,必不可少.swift工程或oc工程添加oc或swift时,Xcode提醒,建议手动添加. 注意引入文件后Xcode的target->build settings自动添加Swift Compiler * 项,Objective-c Bridging Header项填写此文件路径(xx/xx-Bridge-Header.h,xx为工程名) 2.隐藏头文件——xx-Swift.h 必不可少.oc试用swift时,Xco

OC 与 swift 混编杂记

今天使用在swift项目上使用了oc项目的一部分源代码发现了以下问题: 1. oc 无法继承swift类 2. oc 无法使用 纯swift类 3. 带有闭包的函数无法被oc类调用 以上问题使得 oc 使用swift源码变得困难重重 昨天打包的时候发现这个问题: "Undefined symbols for architecture arm64: "__TFFC11duiDuiAlive21DataCenterMerchantsVCgP33_2F08BF04E285995BDA3E31