Swift编程语言与Objective-C技术的融合与发展

更新:11-08 名人轶事 我要投稿 纠错 投诉

但是:现阶段Swift能完全取代Objective-C吗?

答案还没有。

其实Swift距离完全取代Objective-C还很远,因为Apple内部一直在使用Objective-C做一些Framework开发,底层无法用Swift实现,所以现在更多的替代体现在外部开发上。

Swift对比Objective-C的优缺点

优点:

swift 是类型安全的语言,注重安全,OC注重灵活swift 专注于面向协议编程、函数式编程、面向对象编程,OC注重面向对象编程swift 专注于值类型,OC 专注于指针和引用swift是静态类型语言,OC是动态类型语言swift 易于阅读,文件结构和大部分语法简易化,只有.swift文件,结尾不需要分号可选类型,是用于所有数据类型,而不仅仅局限于类。in swift 相比OC 中的nil 更安全、更简洁。 Swift 中的泛型类型更加方便和通用,而非OC 只能将泛型添加到集合类型中。 Swift 中的各种方便快捷[高阶函数](函数式编程)(Swift 的标准数组支持三种高阶函数:map、filter 和reduce,以及映射扩展flatMap) swift新增了两种权限,细化权限。openpublicinternal(默认)fileprivateprivate元组类型(tuples)swift 中独有的,结合了多种值转化为复合值。元组中的值可以是任何类型,并且不要求是同一类型。 Swift 支持函数式编程,但Objc 本身不支持。您需要引入ReactiveCocoa库来支持函数式编程。

缺点

版本不稳定。公司使用率不高,用户数量较少。社区中开源项目很少。毕竟OC已经统治了很多年,很多优秀的类库都不支持Swift。然而,这种情况正在发生变化。现在有很多优秀的Swift开源类库解决了开发过程中偶尔遇到的一些问题。很难找到相关信息,这是一个缺点。对于一些不支持Swift的第三方类库,如果非要使用的话,只能采用混合编程的方式,使用桥接文件来实现。 App大小增加:使用Swift后,App大小增加约5-8M,对大小敏感的用户请谨慎使用。 (体积较大的原因是Swift还在变化,所以苹果并没有在iOS系统中包含Swift运行时库。而是每个App都必须包含其对应的Swift运行时库。)线上的方法发生了变化:在线上,无法使用application Loader上传包文件,并且会提示缺少swift支持文件。您应该使用xcode 直接上传它们。

整体总结

字符串:Swift 中的字符串操作已被OC 消除了300 万条街道。受歧视联盟:枚举。 swift 是静态语言的一个独特功能。安全性:由于swift 强大的静态类型系统,编译器可以帮助你检查出更多的问题,而不是在运行时突然蓬勃发展,还有一个非常酷的安全特性,叫做OptionalType。快速:静态语言比语言本身相对更快。 Swift 编译时可以生成vtable 来确定具体要调用的方法。相比OC的动态调度,自然要快一些。当然,带有OC的桥接部分是经过处理的。不一定比OC快。

细节使用区别

Swift 中没有main.m。 @UIApplicationMain 是程序入口点。 Swift 不区分.h 和.m 文件。每个类只有一个.swift文件,因此总体文件数量相比OC有所减少。 Swift 句子末尾不需要分号,除非你想在一行中写三行代码,用分号分隔它们。在Swift 中,类由一对{ } 括起来。如果没有@implementation和@endswift,数据类型将自动确定。只区分变量var和常量let。强制类型转换格式不同。 OC 强制转换:(int)a Swift 强转换传递:Int(a) 对BOOL 类型更加严格。 Swift 不再是OC 的非0 表示true,而是true 是true,false 是false。 Swift 的循环语句中即使只有一行代码也必须添加{}。 Swift的switch语句后面可以跟各种数据类型,比如Int或者string,而且里面不需要写break(OC好像不能string)。 swift if 后面的括号可以省略: if ab {},而在OC 中if 后面必须写括号。 Swift打印使用print("")来打印变量,可以print("(value)"),不需要像OC那样记住一大堆%@、d%等。 Swift3 的Any 可以表示任何类型的值,无论是类、枚举、结构体还是任何其他Swift 类型。这个对应OC中的id类型。

在OC中,alloc/init对应的是()。在OC中,alloc/initWithXXX对应的是(XXX:)。在OC中,直接使用类函数调用。在Swift中,大部分可以省略self.建议不要写。可以提高对上下文的理解(关闭时你就会意识到)。 OC中的枚举类型使用UIButtonTypeContactAdd,但在Swift中,操作热键是:Enter-Right-。在Swift 中,枚举类型的前缀可以省略,如:ContactAdd,但是:很多时候没有智能提示。 swift 中的范围运算符更灵活a.b 表示[a,b] 包括a 和b。 (例如3.5 表示范围是3, 4, 5) a. (例如3.5 表示范围是3, 4) 常见的如for 循环: for i in 0.9{}

循环引用问题

Objective-C 中有很多循环引用。如果你不小心的话,你就会遇到它们。可能导致循环引用甚至内存问题

Swift

关于Swift编程语言与Objective-C技术的融合与发展到此分享完毕,希望能帮助到您。

用户评论

爱你的小笨蛋

想了解一下Swift 和 Objective-C 的区别在哪

    有6位网友表示赞同!

凝残月

感觉现在开发iOS应用越来越流行使用Swift了

    有11位网友表示赞同!

焚心劫

我在学习编程的时候,也开始接触到了 Swift 和 Objective-C 两种语言

    有18位网友表示赞同!

巷陌繁花丶

哪个语言更适合新手来学?

    有8位网友表示赞同!

闲肆

想问问大家,用 Swift 开发效率怎么样?

    有6位网友表示赞同!

炙年

这两者在实际开发中都有哪些优缺点呢?

    有19位网友表示赞同!

满心狼藉

以前一直听说苹果公司推崇 Swift 作为未来主线语言

    有18位网友表示赞同!

终究会走-

Objective-C 的语法看着好复杂啊!

    有12位网友表示赞同!

未来未必来

我更喜欢 Swift 的简洁语法,感觉更容易学习

    有12位网友表示赞同!

病态的妖孽

有没有什么专门针对这两者比较的教程?

    有17位网友表示赞同!

月下独酌

打算学习iOS开发,不知道先学Swift还是Objective-C?

    有6位网友表示赞同!

如你所愿

这两个语言之间是可以互相转换的吗?

    有17位网友表示赞同!

绝版女子

好奇一下现在哪个语言应用范围更广?

    有18位网友表示赞同!

眷恋

会不会未来 Objective-C 就完全被 Swift 取代了呢?

    有19位网友表示赞同!

你很爱吃凉皮

想听听大家对这两者未来的看法!

    有13位网友表示赞同!

。婞褔vīp

对于经验丰富的开发者来说,哪个语言更实用?

    有7位网友表示赞同!

|赤;焰﹏゛

Swift 能解决 OBJECTIVE - C 中的一些问题吗?

    有19位网友表示赞同!

安好如初

这两个语言之间有没有什么共同点?

    有11位网友表示赞同!

伤离别

学习 Swift 需要掌握 Objective-C 的知识吗?

    有8位网友表示赞同!

【Swift编程语言与Objective-C技术的融合与发展】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:揭秘:来往之殇,支付宝受阻,阿里社交基因缺失?揭秘马云转变局面的关键人物! 下一篇:深入解析OSI七层网络模型与数据封装原理