iOS知识复习条记(16)---swift相关

藏宝库编辑 2024-9-13 12:15:27 27 0 来自 中国
一、函数的派发方式

swift函数的派发机制有三类:static直接派发(静态)派发、table函数派发,message消息派发。

  • 直接派发也称为静态派发,指令集少,还会举行编译优化(函数内联)
    2.函数派发是实现动态活动最常见的方式,通过函数表内里的数组来存储类声明的每个函数指针,称为vitual table, swift里叫witness table
    3.消息派发着实就是oc那套消息发送了,他是cocoa的基石。


二、布局体和类的区别

1.布局体属于值范例、类属于引用范例
2.值范例赋值给let var或函数传参数的时间满是深拷贝、引用范例这是拷贝内容指针浅拷贝。
3.布局体不能继承、类可以。
4.布局体的方法修改属性时间须要用@mutating修饰
5.布局体初始化的时间必须给属性赋值类决定布局体内存布局。
6.布局体声明属性时间不须要赋值,类声明属性的时间须要大概包装成Optional
7.required关键字只支持Class、Class可以用 static和 Class 修饰静态方法,布局体只能用Static
三、copy-on-write的明白

写时复制,在复制时,复制对象和原对象现实上在内存同一个位置,当且仅当修改复制对象是,才对在内存中创建新的地点生存该对象,这样能提拔性能,Struct,String、Array、Dictionary、Set 都采用了这个技能
四、Swift 为什么要将String,Array ,Dictionary 计划为值范例


  • 值范例比引用范例最大上风在于内存利用高效,值范例在栈上利用,引用范例在堆上利用。栈上利用仅仅是单个指针上下移动,而堆上利用会扳连到归并,移位、重新链接等。这样计划就大幅淘汰了堆上内存分配和采取次数,同时利用copy-on-write又将值通报的复制开销降到最低。
  • 线程安全思量,通过let 设置,到达数据稳固,办理多线程内存访问和利用标题。
  • 提拔了api机动度,让我们可以方便的遍历String。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:20, Processed in 0.152827 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表