oc调用swift

iOS Swift的一些小知识(不断补充)

半城伤御伤魂 提交于 2020-02-04 19:32:38
1 . 在swift文件里是不能写c语言函数的,不兼容c,直接报错。想调用c语言函数,就要利用系统提供的桥接功能,就如同swfit中调用oc一样! 2 .swift 2.0后提供了@convention(c) 用来把 swift的闭包函数转化成c语言指针。下面这种情况就会用到这个特性, 我们在c语言文件里,定义了一个函数: CGFloat myCFunction(CGFloat (callback)(CGFloat x, CGFloat y)) { return callback(1.1, 2.2); } 这里的callback函数是一个c语言函数指针,我们在swift里可以这样使用: let swiftCallback : @convention(c) (CGFloat, CGFloat) -> CGFloat = { (x, y) -> CGFloat in return x + y } let result = myCFunction( swiftCallback ) 也有如下的简化的方法: let result = myCFunction( { (x, y) -> CGFloat in return x + y } ) 3. 如何在老的oc项目中,引入swift代码内容 http://jrjian.github.io/2016/03/10/embed-swift-to-oc

Swift和Objective-C相互调用

早过忘川 提交于 2020-01-25 05:20:02
1.Swift调用ObjectiveC 1.1创建OC类 //testObject.h文件 #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface testObject : NSObject -(void)seyHello; @end NS_ASSUME_NONNULL_END //testObject.m文件 #import "testObject.h" @implementation testObject -(void)seyHello{ NSLog(@"seyHello-from Objective-C"); } @end 1.2创建桥接文件 在Swift工程内想要调用OC是相对比较容易的,只需在桥接文件中导入想要调用的OC类即可。 当在Swift工程中创建完成OC类的时候,系统会提示我们是否创建桥接文件,这个时候一定要选择创建,否者我们自己创建需要设置路径。 如果系统提示时未创建桥接文件或未提示,可以根据下面步骤创建桥接文件 创建一个Header File文件,一般命名为“项目名-Bridging-header”,内容清空,找到Build Settings搜索Objective-c Bridging header,将刚刚创建的桥接文件的路径添加到Objective-c Bridging

Swift与OC混合开发

a 夏天 提交于 2019-11-30 12:10:55
一、Swift调用OC 1. 创建{targetName}-Bridging-Header.h头文件,在BuildSetting -> bridging 2. Swift文件调用的OC中的类的头文件需要在{targetName}-Bridging-Header.h导入类 二、OC调用Swift 1. Xcode默认生成{targetName}-Swift.h 在BuildSetting -> generated interface 2. 在OC类中使用Swift中的类需要导入{targetName}-Swift.h头文件,OC访问Swift的类是有要求的 1. Swift类必须继承NSObject 2.OC中访问Swift类的成员 那么成员必须使用@objc修饰 或者直接使用@objcMembers修饰类,表明该类所有的成员都可在OC中访问 来源: https://www.cnblogs.com/CoderHong/p/11583987.html

OC与Swift混编注意点

↘锁芯ラ 提交于 2019-11-30 12:03:19
创建一个OC新工程 在其中创建一个Swift的文件 生产的test-Bridging-Header.h 为OC桥接文件 ,Xcode会自动配置 配置使OC能调用swift类 然后在需要调用swift类的地方加上头文件格式为:$(TARGET_NAME)-Swift.h 注意:有些时候会报此文件找不到的错误,那是因为工程名对应不上,具体查看这里设置 例如 test-a工程对应就会为test_a-Swift.h test b工程对应就会为test_b-Swift.h 具体使用方法跟OC一样,可以点进test-Swift.h查看 已经自动将swift转换为OC,直接调用就可以了。 4. Swift调用OC 5. OC调用swift方法 前边需要加上@objc 暴露给OC才可以调用 demo连接 来源: https://blog.csdn.net/quanhaoH/article/details/101347275