美文网首页Swift
Swift:与OC混编

Swift:与OC混编

作者: 码小菜 | 来源:发表于2022-10-10 11:10 被阅读0次

目录
一,条件编译
二,KVO/KVC
三,Swift调用OC
四,OC调用Swift
五,字符串
六,多线程

一,条件编译

1,代码标记
2,条件编译
3,信息打印
4,版本检测
5,API可用性
6,程序入口

二,KVO/KVC

1,选择器
  • 必须是被@objcMembers@objc修饰的方法才可以定义选择器
2,协议可选方法
  • 可以用@objc将方法定义为可选的,这种协议只能被类遵守
3,dynamic
  • dynamic修饰的内容具有动态性,比如:调用方法会走runtime消息发送流程
4,KVO/KVC
  • Swift支持KVO/KVC的条件:
  • 属性所在的类、监听器最终继承自NSObject
  • dynamic修饰对应的属性
5,关联对象
  • 默认情况下,在extension中不可以添加存储属性
6,资源名管理

三,Swift调用OC

1,条件
  • 新建一个桥接头文件,文件名格式默认为:{targetName}-Bridging-Header.h
  • 在头文件中#import需要暴露给Swift使用的文件
2,OC代码
3,Swift代码
4,修改函数名
  • 如果C语言暴露给Swift的函数名跟Swift中其他的函数名冲突了,可以在Swift中使用@_silgen_name修改C语言的函数名

四,OC调用Swift

1,条件
  • Xcode默认生成了一个用于OC调用Swift的头文件,文件名格式是:{targetName}-Swift.h
  • Xcode会根据Swift代码生成对应的OC声明,并写入该头文件中
2,Swift代码
  • 暴露给OC的类需要最终继承自NSObject
  • 使用@objc修饰需要暴露给OC的成员
  • 如果想要所有成员都暴露给OC,就使用@objcMembers来修饰类
3,OC代码
4,修改符号名
  • 可以通过@objc重命名暴露给OC的符号名(类名、属性名、方法名等)
5,调用方法
  • 暴露给OC的类为何需要继承自NSObject

OC调用方法会走消息发送流程,消息发送流程需要用到isa指针,而isa指针是在NSObject中定义的

  • OCSwift调用方法的区别?

OC调用方法是走消息发送流程,不论是OC调用Swift方法,还是Swift调用OC方法;Swift调用方法是用虚表来实现的

五,字符串

1,String
  • 基本使用
  • 插入删除
  • 多行
2,Substring
  • 子串类型不是String,而是Substring
  • Substring和它的base,共享一份数据
  • Substring发生修改或者转为String时,才会分配新的内存
3,Character
4,NSString
  • NSStringString可以用as直接互相转换
  • NSMutableString可以用as转换为String,反之则不可以

六,多线程

1,异步
2,延迟
3,once
  • dispatch_onceSwift中已被废弃
  • 可以用类型属性或者全局变量/常量来实现
  • 默认自带lazy + dispatch_once的效果
4,加锁

相关文章

  • Swift

    混编 15、OC与Swift的混编_海森堡_lichangan的博客-CSDN博客_oc swift 混编[htt...

  • oc Swift 混编

    oc Swift 混编 oc 项目 混编Swift1.1 oc 调用 Swift 的类 和 方法步骤: ...

  • OC与Swift混编 / Mix & Match

    OC与Swift混编 / Mix & Match OC in Swift 通过Header File创建Bridg...

  • 自制Framework:swift与OC混编,自定义module

    为何要swift与oc混编 在ios开发中,swift与oc的混编,几乎是不可避免的。2014年,Apple在开发...

  • OC与Swift混编

    OC与Swift混编 一.objectivec与Swift相互调用对照 OC interface文件如下 转换后对...

  • Swift与OC混编

    Swift与OC混编:OC文件使用Swift文件时,引入#import (项目名字)-Swift.h。(系统帮我们...

  • iOS开发之一Swift与OC混编

    Swift与OC混编:OC文件使用Swift文件时,引入#import (项目名字)-Swift.h。(系统帮我们...

  • OC和Swift混编手动创建桥接文件及命名空间

    Obj-C混编Swift && Swift混编Obj-C Swift引用OC实现通过桥接头文件,OC引用Swift...

  • OC和Swift混编一

    OC工程下混编 Swift工程下混编请查看OC和Swift混编二 1.建一个OC工程命名为OCTestSwift ...

  • swift与OC混编

    swift与OC混编的总结 现在的swift开发多数会用到混编。swift和oc是通过桥接文件来实现的。无论是在o...

网友评论

    本文标题:Swift:与OC混编

    本文链接:https://www.haomeiwen.com/subject/saxxartx.html