大家好,深入探讨Swift中的类与结构体:与Objective-C的对比分析相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于深入探讨Swift中的类与结构体:与Objective-C的对比分析和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
var testV: Int=10
变异函数mutatingFunc(param: Int) {
测试V=参数;
}
}2)Class:引用类型:可以继承;内容存储在堆中;赋值操作:一处修改,其他地方也修改; let类型类变量(内存不可修改),其var属性可以修改
3)、不同方法调度
结构体直接调度
类一般使用方法表调度,static和final或者类扩展使用直接调度,@objc动态修改使用消息调度(objc_msgSend)。
2、swift和OC的区别
斯威夫特研究
1) Swift 是一种具有类型推断的强类型(静态)语言,而Objective-C 是一种弱类型(动态)语言。
2)Swift面向协议编程注重值类型,值类型可以遵守协议; Objective-C面向对象编程注重引用类型,只有类才能遵守协议
3)Swift支持泛型,包括值类型和引用类型; OC仅支持向集合添加泛型,并且仅支持引用类型
4)Swift支持静态分派(效率高)和动态分派(函数表分派、消息分派),Objective-C支持动态分派(消息分派)。
5)通过swiftModule引用Swift文件,提高变异效率。 OC 可以是pch、hmap、#import 等。
3、swift 调度方式
结构体:静态调度(直接调度)编译连接后,生成方法对应的地址。直接调用地址会非常高效。
类:类中声明的法是通过 V-table 来进调度的图片.png
特殊情况:1.扩展添加的方法:静态调度,直接调用方法地址
图片.png
2.@objc
仍然添加到sil_vTable中进行调度
除了生成swift方法外,还会生成一种方法供OC调用。
OC调用的方法内部,调用swift的方法
图片.png
图片.png
3、动态
动态函数示教() {
打印("教学")
}
image.png告诉编译器这个方法可能会被动态调用,需要添加到查找表中,具有OC方法的特点。
使用dynamic关键字标记属性,开启Objc的动态转发功能;
Dynamic仅用于类,不能用于结构体和枚举,因为它们没有继承机制,而Objc的动态转发是基于继承关系实现转发的。
4.@objc动态
@objc动态函数教学(){
打印("教学")
好了,文章到此结束,希望可以帮助到大家。
【深入探讨Swift中的类与结构体:与Objective-C的对比分析】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
想学Swift语言,了解一下类和结构体概念是基础的哈!
有8位网友表示赞同!
这次课程正好填补了我的知识空白,让我能更好地理解Swift的语法。
有16位网友表示赞同!
对比Swift和Objective-C,感觉Swift更简洁明了,开发起来效率更高!
有10位网友表示赞同!
一直好奇两种语言的区别,这篇文章应该能解答我的疑问。
有20位网友表示赞同!
学习新的编程语言 always 有点挑战性,希望这篇介绍能让我入门轻松!
有8位网友表示赞同!
我还在用Objective-C 开发项目,希望能从Swift中获得一些灵感。
有14位网友表示赞同!
Swift的类和结构体之间有什么特别的区别吗?期待学习
有18位网友表示赞同!
现在越来越多人推荐使用Swift了,看来学习它很有前景!
有7位网友表示赞同!
了解swift和OC的区别对于选择合适的语言很重要吧!
有6位网友表示赞同!
这篇文章能帮助我更清晰地认识Swift的优缺点吗?
有20位网友表示赞同!
学习编程最怕的是学到一半就卡住了,希望这个课程可以一路帮我解决难题!
有11位网友表示赞同!
我的项目需要用到Objective-C 和 Swift 的特性,这篇文章看起来很有用。
有6位网友表示赞同!
不知道Swift的类和结构体在实际应用中会有哪些差异?
有10位网友表示赞同!
最近想升级更新我的iOS开发技能,学习Swift是个不错的选择!
有18位网友表示赞同!
swift语言是不是比objective-c 更加安全、稳定呢?
有8位网友表示赞同!
这篇文章能帮助我快速掌握Swift语法和使用方法吗?
有11位网友表示赞同!
我一直对混合编程比较感兴趣,看看Swift 和 objective-C 的结合会怎么样
有9位网友表示赞同!
学习Swift的最好的途径是什么?除了这篇文章还需要参考什么资料?
有19位网友表示赞同!