OC 与 swift 混编杂记

今天使用在swift项目上使用了oc项目的一部分源代码发现了以下问题:

1. oc 无法继承swift类

2. oc 无法使用 纯swift类

3. 带有闭包的函数无法被oc类调用

以上问题使得 oc 使用swift源码变得困难重重

昨天打包的时候发现这个问题:

“Undefined symbols for architecture arm64:

"__TFFC11duiDuiAlive21DataCenterMerchantsVCgP33_2F08BF04E285995BDA3E31B94BCF039714collectionViewCSo16UICollectionViewauL_4selfS0_", referenced from:

__TTSf4g___TFFFFC11duiDuiAlive21DataCenterMerchantsVCgP33_2F08BF04E285995BDA3E31B94BCF039714collectionViewCSo16UICollectionViewU_FT_S1_L_23configureCollectionViewFS1_T_L_11setDelegatefT_T_ in DataCenterMerchantsVC.o

ld: symbol(s) not found for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个看起来像是编译器bug,因为我在 build phases中删掉该文件再添加后 又可以了。 但是最后还是有一个文件仍然出现错误,刚开始是四个文件,经过上述步骤只有一个。后来我仔细检查错误提示 ,把相关的函数改掉就好了。本来使用的是内嵌函数,把他展开就好了。也不知道为什么。

时间: 2024-10-15 20:53:54

OC 与 swift 混编杂记的相关文章

OC跟Swift混编

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

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

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

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文件中自行调

关于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

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.创建一个swift或者oc的工程:我这里是创建的Swift语言的工程,工程名SwiftTest   2.在工程中代码目录下创建一个oc的类,选择oc语言, 会出一个对话框,选择YES          3.这时会在工程里看到下图这样一个头文件           4.在这个头文件里添加你的OC文件的.h文件,就可以在任意swift文件中自行调用所包含的oc文件了.   5.接下来在工程的target

OC与Swift混编

如何在OC类里调用Swift函数? 新建一个工程,language选择swift,新加一个名为"SwiftClass.swift"的swift文件,一个名为"OCClass"的OC的.h和.m文件因为OC文件必须导入头文件,而Swift默认的头文件格式为:"工程名-swift.h",它就是项目中所有的swift类的头文件.  导入这个文件之后,就可以引用Swift里的方法了. 如何在Swift文件里调用OC文件?在桥接文件里导入所有你需要暴露在S