SWIFT与目标-C:10个原因未来的兴趣

这是使开关更加平易近的,为iOS和OS X App Dev更易于平易近的

SWIFT与目标-C:10个原因未来的兴趣

编程语言不容易死亡,但开发商店坚持褪色的范式。如果您正在为移动设备的应用程序开发应用程序,请注意:Swift不仅将涉及到为Mac,iPhone,iPad,Apple手表和设备的应用程序开发应用程序时,但它还将替换C嵌入式编程在Apple平台上。

由于若干关键功能,SWIFT有可能成为多年来创建沉浸式,响应,面向消费者应用的De-Facto的编程语言。

苹果似乎有迅速的重要目标。它优化了编译器的性能和开发语言,并暗示了SWIFT“旨在从”从'Hello,世界“到整个操作系统”中的“Swift的文件。虽然Apple尚未对该语言进行所有目标,但Xcode 6,游乐场和Swift的启动,苹果公司意图使应用程序开发更容易,并且比任何其他开发工具链更容易。

以下是通过现在与Swift一起使用的游戏领先的10个理由。

1. Swift更容易阅读

Objective-C患上C的语言所期望的所有疣。对于不同的关键字和类型,Objective-C使用@符号推出新的关键字。由于SWIFT未构建在C上,因此它可以统一所有关键字,并在每个Object-C类型或对象相关关键字前面删除大量@符号。

Swift降掉了遗产惯例。因此,您不再需要分号到结束行或括号以围绕IF / else语句的条件表达式。另一个大的变化是方法调用不嵌套在彼此内部导致括号地狱 - 再见,[[[]]。SWIFT中的方法和函数调用使用括号内的行业标准逗号分隔的参数列表。结果是一种清洁,更具表现力的语言,具有简化的语法和语法。

除了其他现代流行的编程语言之外,Swift代码更与自然英语相似。这种可读性使现有程序员从JavaScript,Java,Python,C#和C ++中更容易采用Swift进入其刀具链 - 与丑陋的小鸭不同。

2. SWIFT更容易维护

遗产是持有物镜 - C的东西 - 没有C演变的语言无法发展。C要求程序员维护两个代码文件,以提高可执行应用程序创建的构建时间和效率,这是携带到Objective-C的要求。

SWIFT丢弃了双文件要求。Xcode和LLVM编译器可以弄清楚依赖关系,并在SWIFT 1.2中自动执行增量构建。结果,从身体(实现文件)分离内容(头文件)表的重复任务是过去的事物。Swift将Objective-C标题(.h)和实现文件(.m)与单个代码文件(.swift)组合。

Objective-C的两文件系统对程序员施加了额外的工作 - 它的工作分散了从更大的图片中分散了程序员。在Objective-c中,您必须手动同步文件之间的方法名称和评论,希望使用标准约定,但除非团队有规则和代码审查,否则不会保证。

Xcode和LLVM编译器可以在场景后面工作,以减少程序员上的工作负载。随着SWIFT,程序员少簿记,可以花更多的时间创建应用程序逻辑。SWIFT削减了支持的样板,提高了支持的代码,评论和功能的质量。

3. Swift更安全

Object-C的一个有趣方面是指针 - 特别是单指针的方式 - 被处理。在Objective-C中,如果您尝试使用Nil(未初始化)的指针变量调用一种方法,则不会发生任何反应代码的表达或行成为无操作(NO-OP),而虽然它似乎没有崩溃,但它一直是巨大的错误来源。一个No-OP导致不可预测的行为,这是程序员试图找到和修复随机崩溃或停止不稳定行为的程序员的敌人。

可选类型在SWIFT代码中具有非常清晰的NIL可选值的可能性,这意味着它可以在编写错误代码时生成编译器错误。这会创建一个短的反馈循环,并允许程序员与意图代码。由于编写代码,问题可以修复,这大大降低了您将花费的时间和金额来修复与目标-C相关的指针逻辑相关的错误。

传统上,在Objective-C中,如果从方法返回一个值,则程序员有责任记录返回的指针变量的行为(使用注释和方法命名约定)。在SWIFT中,如果存在该值或者它具有可选的可能性(即,值可能存在或者它可能是NIL),则可选类型和值类型在方法定义中明确清除它。

为了提供可预测的行为,如果使用了nil可选变量,Swift会触发运行时崩溃。这种崩溃提供了一致的行为,从而简化了错误修复过程,因为它迫使程序员立即修复问题。Swift运行时崩溃将在使用了nil可选变量的代码行停止。这意味着在Swift代码中,bug将很快被修复或完全避免。

4. SWIFT通过内存管理统一

Swift以目标-C从未拥有的方式统一语言。对自动参考计数(ARC)的支持在过程和面向对象的代码路径上完成。在Objective-C中,Cocoa API和面向对象的代码支持弧;但是,它不适用于程序C代码和API,如核心图形。这意味着在使用核心图形API和IOS上可用的其他低级API时,可以使程序员责任处理内存管理。庞大的内存泄漏,程序员可以在Objective-C中迅速泄漏。

程序员不得不为他或她创建的每个数字对象考虑内存。由于arc在编译时处理所有内存管理,所以将朝向内存管理的笨拙者可以集中在核心应用程序逻辑和新功能上。由于SWIFT中的弧度跨越过程和面向对象的代码,因此它不需要更多的程序员,即使它们编写触摸较低级别API的代码 - Object-C的问题。

自动和高性能的内存管理是已经解决的问题,苹果已证明它可以提高生产力。另一种副作用是Objective-C和Swift两者都不会遭受运行清理的垃圾收集器,因为Java,Go或C#。这是任何编程语言的重要因素,这些语言将用于响应性图形和用户输入,尤其是在iPhone,Apple手表或iPad等触觉设备上(滞后令人沮丧,让用户感知应用程序被打破)。

5. SWIFT需要更少的代码

SWIFT减少了重复语句和字符串操作所需的代码量。在Objective-C中,使用文本字符串非常详细,需要许多步骤来组合两条信息。SWIFT采用现代编程语言,如将两个字符串与“+”运算符一起添加,它在Objective-C中缺少。支持与这样的字符和字符串相结合,这对于任何编程语言显示在屏幕上的用户到用户的基础。

SWIFT中的类型系统会降低代码语句的复杂性 - 因为编译器可以弄清楚类型。作为示例,Objective-C要求程序员记住特殊字符串令牌(%S.%D.%@)并提供逗号分隔的变量列表以替换每个令牌。SWIFT支持字符串插值,消除了记忆令牌的需要,并允许程序员将变量直接插入到面向用户的字符串,例如标签或按钮标题。类型的介绍系统和字符串插值减轻了Objective-C中常见的崩溃源。

使用Objective-C,搞定订单或使用错误的字符串令牌导致应用程序崩溃。在这里,SWIFT再次缓解了您从簿记工作中的工作,转换为较少的代码,编写(易于错误的代码),因为其内联支持文本字符串和数据。

6. SWIFT更快

丢弃遗产C惯例在引擎盖下大大改善了。SWIFT代码性能的基准继续指向Apple的奉献精神,以提高Swift可以运行应用程序逻辑的速度。

根据灵长类动物的实验室,流行的Geekbench性能工具的制造商,Swift正在接近C ++的性能特征12月份计算束缚任务2014年使用Mandelbrot算法。

2015年2月,灵长类动物实验室发现Xcode 6.3 Beta提高了Swift的GemM算法的性能 - 一种内存绑定算法,具有大阵列的顺序访问 - 倍数为1.4。初始FFT实现 - 具有大阵列随机访问的内存绑定算法 - 具有2.6倍的性能改进。

通过应用最佳实践,在SWIFT中观察到进一步改进,导致FFT算法性能的8.5倍提升(仅具有1.1次性能增益的C ++)。增强功能还使Swift略高于Mendelbrot算法的C ++,其因子仅为1.03。

Swift几乎与FFT和Mandelbrot算法的C ++相结合。根据灵长类动物实验室,GEMM算法的性能表明SWIFT编译器无法将C ++编译器的代码 - 一个简单的性能增益,可以在下一个版本的SWIFT中实现。

7.与开源项目的名称较少违规

具有困扰Object-C代码的一个问题是它缺乏对名称空间的正式支持,这是C ++对代码文件名冲突的解决方案。当Objective-C中发生此名称碰撞时,它是一个链接错误,并且应用程序无法运行。替代方法,但他们有潜在的陷阱。常见的约定是使用两个或三个字母的前缀来区分写入的Object-C代码,由Facebook与您自己的代码相反。

SWIFT提供了隐式命名空间,允许在多个项目中存在相同的代码文件,而不会导致构建失败,并要求从Apple发射后(下一个步骤 - 史蒂夫乔布斯的公司)或CGPoint(核心图形)。最终,SWIFT中的这种功能使程序员更加富有成效,意味着他们不必进行目标-C中存在的簿记。您可以看到Swift的影响与阵列,字典和字符串等简单名称,而不是nsarray,nsdictionary和nsstring,它源于Objective-C中缺少名称空间。

使用SWIFT,命名空间基于代码文件所属的目标。这意味着程序员可以使用命名空间标识符来区分类别或值。这种迅速的变化很大。它非常便于将开源项目,框架和库纳入您的代码。命名空间使不同的软件公司能够在整合开源项目时创建相同的代码文件名,而无需担心冲突。现在,Facebook和Apple都可以使用名为flutcar.swift的对象代码文件而没有任何错误或构建故障。

8. SWIFT支持动态库

迅速的最大变化尚未受到足够的关注是来自静态库的交换机,它在主要点版本(iOS 8,iOS 7等)上更新到动态库。动态库是可执行的代码块,可以链接到应用程序。此功能允许当前SWIFT应用程序在随着时间的推移演变时,将较新版本的链接链接。

开发人员与库一起提交应用程序,两者都以开发证书数字签名,以确保完整性(Hello,NSA)。这意味着SWIFT可以比iOS快速发展,这是一种现代编程语言的要求。图书馆的更改都可以包含在App Store上的最新更新中的最新更新,并且一切都只需工作。

即使在MAC上支持动态库和iOS 8,SWIFT和IOS 8的推出,IOS从未得到动态库。动态库是应用程序可执行文件的外部,但包含在从App Store下载的App Bundle中。它将其加载到内存中的应用程序的初始大小减少,因为外部代码仅在使用时链接。

有关的:
12 4.
第1页,共2页
IT薪水调查:结果是