阅读更多
我记得很清楚,在 WWDC 2014 大会上,Apple 第一次宣布了一个为 iOS 准备的叫做 Swift 的新的编程语言。估计当时的参会者大多数都会有这样的想法在大脑里闪过:
  • 等等,这是虾米?
  • 天啊,我一直喜爱 Objective-C,但现在开始要学习一个新的语言了?
  • 这是为iOS 8构建App的唯一方式?

之前有人问过这样的问题:对于初学者,Objective-C 和 Swift,你推荐先学哪一个?

真正从长远角度来看,学习 Objective-C 还是 Swift 语言其实很不重要。



Swift 刚发布的时候有人说“这下所有人都回到零起点了”,实际上是外行的一个常见的误解。Swift / Objective-C 和 iOS 开发是两个不同的概念,前者仅仅是一门编程语言,而后者则包括了编程思想、Cocoa 框架的使用,甚至交互设计规范、界面设计规范等 iOS 开发所需的一整套东西,并且绝大部分是和语言无关的。从学习的角度看,大部分时间你将花在学习 后者上,而具体语言和语法只占很小的比例。Objective-C 和 Swift 虽然语法上差异很大,但是背后的思想以及所依托的类库都是相同的。关于 iOS 应用开发你能想到的绝大多数问题,例如:
  • 一个应用的代码是从哪里开始执行的?
  • 如何建立一个按钮,并实现用户点击这个按钮之后调用一个函数?
  • 如何修改一个标签的文字?
  • 如何控制系统发出声音或者播放视频?
  • 如何检测设备的朝向?
它们的答案都取决于Cocoa框架如何使用,而非具体采用的语言是什么——你关注的应该是背后的“我该做什么,为什么要这么做”,而不是简单的“具体怎么去写”——不同语言仅仅是一个写法不同而已,手册和网络上都可以查到,用多了自然掌握。
因此,对于一个已经掌握了 Objective-C 和 iOS 开发的人,迁移到 Swift 是几天就可以搞定的;而对于一个掌握了 Swift 和 iOS 开发的人,迁移到 Objective-C 也不会很困难。
至于选择哪个语言,我想说 Swift 代替 Objective-C 肯定是有原因的,必须承认 Objective-C 的很多语法的确很怪很繁杂(Objective-C 的啰嗦是出了名的),可能对编程语言的初学者不太友好,Swift 接受起来会稍微容易一些。但另一个事实是,目前 Swift 的文档、教程和代码还比较少,并且大部分都是关于语法的。虽然有一两个官方文档是关于如何从 Objective-C 切换到 Swift 的,也有一些 Swift 的示例代码,但和 iOS 开发这个庞大的体系比起来,覆盖面仍然很窄。这对于已经掌握 Objective-C 的开发者不是问题,但是对于什么都不会的初学者,看过 Swift 的文档之后能写一个类似 C 的控制台应用程序出来,但是很难写一个你自己想要的完整可用的 iOS App 出来。因此,基于你的情况,我还是倾向于推荐从 Objective-C 开始学起。

有 Objective-C 开发经验的开发者说

Apple 很快就将大部分的开发者聚集到一起,正如它很绅士的向大家介绍 Swift 并回答所有疑问那样。Apple 向外承诺说,iOS 开发者使用 Swift 一定能从一个现代语言里获得很多好处,包括像强类型化、类型推理、通用术语等等。这些功能都是 Objective-C 开发者一直感兴趣的东西,但是有学习 Swift 编程语言需要花多少时间精力?



学习一个新的编程语言当然不会吓到任何一个 Objective-C 开发者,但也并是说 Swift 里面的所有新的功能都很有吸引力的,更何况,Objective-C 在2008年3月6号就开始被用来构建 iPhone OS 里的移动App了。
上面所说到的都是有经验的开发者,那么对于没有 Objective-C 开发经验的开发者来说,他们对这个新的编程语言是什么态度呢?
  • 真走运,可以避开 Objective-C 的折磨了。
  • 只是一个 .swift 文件,没有标题或实现文件!太棒了!
  • 插入语的山寨版大全终于要出来了。

这些新手也许话里话外都是在谈论 Swift,最关键的是他们都很庆幸 Swift 终于可以在不久的将来完全替代相对复杂难懂的 Objective-C 了。

Swift 开发者说

下面这些是多维数组的 Objective-C 代码片段,用Xcode输出窗口展示出来的数值:
#import <Foundation/Foundation.h>

int main()
{
 /* an array with 5 rows and 2 columns*/
 int a[5][2]-{{0,0},{1,2},{2,4},{3,6},{4,8}};
 int i,j;
 
 /* output each array element's value*/
 for(i=0;i<5;i++)
 {
   for(j=0;j<2;j++)
    {
       NSLOG(@"a[%d][%d]=%d\n",i,j,a[i][j]);
     }
     return 0;
  }
}

不知道你有没有看到什么熟悉的东西,‘i’ 和 ‘j’ 代表的含义,还有循环。但是接下来的 ‘a’ 代表什么,或者 NSLog 是什么样的语法?估计没人想要写这样的代码,不管我们想要得到什么,至少这就是我们暂时想要看到的。

Swift 发布之后,我为什么还要学习 Objective-C?

要想回答这个问题,就得先解决这些问题。调试一个麻烦的 bug。
你之前有在任何移动商店构建和发布过App吗?如果有的话,你肯定在开发过程中遇到过较为严重的bug 吧。反正我是遇到过的,大多数 bug 都是比较难缠的。无论你使用的是 Swift 还是 Objective-C来编写App,底层框架都是用 Objective-C 写的。缺陷深度的执行堆栈需要超过知识迅速的语言。要是在执行栈里遇到 bug 的话,必须对 Swift 语言相当了解才能将其解决。
我之前就用 Swift 编写过一个App,同时遇到了一个用于显示数据的 TableView 上出现的问题,虽说这是一个不太复杂的问题,可是在我做了“优秀开发者”做的解决方案之后,还是没办法解决。然后在 Google 上寻找答案,虽然方法有很多,但是都只支持 Objective-C 代码。不知道要多久才能出现包括 Swift 在内的解决方案?但是我们知道目前的开发者社区里 Objective-C 是通用语言。

iOS 开发者社区的通用语言是 Objective-C

历史告诉我们,过渡是需要时间的。然而这个过渡时间需要多长,谁都说不准!在自动引用计数(ARC)发布之前,当看到‘release’和‘retain’的时候都会畏缩一阵子。在 Apple 发布一个过渡指导之后,开发者开始代替使用手动引用计数。
AutoLayout 怎么样?很多开发这一开始的时候抱着试试看的态度使用,结果并没有达到自己想要的效果,所以他们只能放弃,“等到下一个 Xcode 版本出来的时候再试试吧!”

Demo Code != Production Code

在 WWDC keynote 上面我们看到 Swift 的运行速度很快,但真的有那么快吗?之后在各个博客页上和 StackOverflow 出现了对比,用 Swift 构建各种产品。在现实情况下用 Swift 创建 App 的时候,其表现和 Objective-C 有哪些区别呢?随着时间的推移,Swift 可能会更快,但我没那么多时间去等。

Swift 一直在不断的改进

Swift 知道自己的目标,但是没什么可以击败自己老大哥 Objective-C 这么多年的经验。如果你想要添加 C++ 代码到一个 iOS App里面,你还得了解 Objective-C。
  • 大小: 17.1 KB
  • 大小: 14.1 KB
来自: CSDN
1
0
评论 共 1 条 请登录后发表评论
1 楼 zwlfyl 2014-10-16 05:24
i don't think so

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • iOS 快速从 Objective-C 过渡到 Swift:从理论到实践 - Objective-C 和 Swift 的混合编程

    在将项目从 Objective-C 迁移到 Swift 的过程中,可以逐步将 Objective-C 代码转换为 Swift,或者选择保留一部分 Objective-C 代码,并与新的 Swift 代码进行混合编程。Objective-C 和 Swift 之间的混合编程可以通过...

  • 毕业设计电商网站源码-iOS:iOS开发者Swift/Objective-C技能

    ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的一个框架 ReactiveCocoa是做什么的? ReactiveCocoa 的作用; 在我们iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用...

  • 盘点一些iOS开发技巧:Swift和Objective-C

    在这短短的一年中(有关APP的开发)发生了如此多的变化:在充满吸引力的Swift面前,我们几乎忘了之前是如何痴迷于Objective-C;以及充满想象力的iOS8和WatchKit,难以想象还有什么API能与之相比。NSHipster的惯例:...

  • Swift 与 Objective-C:您应该为下一个 iOS 移动应用选择哪个?

    2014 年,Apple 推出了一种更简单的新方法来构建 iOS 应用程序 - Swift。然而,在 2020 年,IT 经理和 CTO 仍然难以在 Objective-C 和 Swift 之间做出选择。为了消除任何疑问,我们比较了它们并准备了本指南。 什么...

  • iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?

    **前言:**目前全球共有超过 7 亿台 iPhone 处于活跃状态,全球约有2000万名 iOS 开发者,这造就了 iOS 作为全球第二大移动设备平台的状态。 虽然安卓系统的全球市场占有率超过 iOS 系统,但在诸如美国、法国和英国...

  • Swift 能不能取代 Objective-C?

    其实到现在为止 Swift 离替代 Objective-C 还是很遥远,因为 Apple 内部一直在用 Objective-C 来做一些 Framework 的开发,低层也不可能...首先我们先去探究一下为什么苹果会选择 Objective-C 作为官方开发语言?...

  • Objective-C语言学习路径及各阶段实例

    随着学习的深入,了解Swift语言也是必要的,因为自iOS 8以来,Swift逐渐成为Apple平台上的主流开发语言,而Objective-C在现有项目中仍然大量存在。同时,熟悉Cocoa Touch库对于iOS应用开发者至关重要。

  • iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后? ...

    **前言:**目前全球共有超过 7 亿台 iPhone 处于活跃状态,全球约有2000万名 iOS 开发者,这造就了 iOS 作为全球第二大移动设备平台的状态。 虽然安卓系统的全球市场占有率超过 iOS 系统,但在诸如美国、法国和英国...

  • Swift与Objective-C的异同

    但对于已经存在的Objective-C项目,或者需要与Objective-C库进行交互的情况,Swift提供了良好的兼容性。由于Swift是苹果推出的较新的语言,与Objective-C相比,它在一些方面具有更好的语言特性和更先进的功能。在...

  • iOS开发应该选择Objective-C还是Swift

    iOS开发应该选择Objective-C还是Swift,这里会给出你选择:1.如果你想成为一个iOS开发者,你仍然需要学习Objective-C。2.Objective-C比Swift更容易学习。3.一旦你学习了Objective-C,学习Swift就很容易了。

  • Objective-C和Swift的区别是什么?

    Swift是2013年苹果发布的一种新的iOS开发语言,其目的在于替代复杂的Objective-C。Swift的设计借鉴了目前比较流行的几种开发语言。例如Python、Ruby等,使得Swift用起来非常简单、快捷,它比Objective-C的学习成本更...

  • 同时使用Swift和Objective-C,怎么做?

    Swift 与 Objective-C 的兼容能力使你可以在同一个工程中同时使用两种语言。你可以用这种叫做&nbsp;mix and match&nbsp;的特性来开发基于混合语言的应用,可以用 Swfit 的最新特性实现应用的一部分功能,并无缝地...

  • Swift与Objective-C和Cocoa混合编程的基本设置!

    重要事项:这篇文章初步介绍了在开发中用到的 API 或技术。苹果公司提供这些信息来帮助您规划本文所说明...在 Swift 中,你可以使用 Objective-C 的 API(包括系统框架和你自定义的代码),你也可以在 Objective-C中 ..

  • iOS 友盟统计的 Objective-C 和 Swift 混编

    在本文中,我们将探讨如何在 Objective-C 和 Swift 混编的项目中集成友盟统计。首先,我们需要在项目中集成友盟统计的 SDK。假设我们已经成功导入了友盟统计的 SDK,并在项目中进行了配置。在实际开发中,我们可以...

  • WebAudioAPIError(解决方案).md

    项目中常见的问题,记录一下解决方案

  • avnet(安富利)网站详情页数据样例

    avnet(安富利)网站详情页数据样例

  • 1-全国各地区建筑业-二级专业承包建筑业企业利润总额2005-2012年-社科数据.zip

    该数据集涵盖了2005至2012年间全国各地区二级专业承包建筑业企业的利润总额。这些数据不仅包括了原始数据,还提供了线性插值和ARIMA填补的版本,以便于研究者能够根据不同的需求选择合适的数据形式进行分析。数据集中包含了行政区划代码、地区名称、是否属于长江经济带、经纬度信息、年份以及利润总额等关键指标。这些指标为评估企业的经营效益和盈利水平提供了重要依据,同时也反映了建筑业在不同地区的发展态势。数据来源为国家统计局,确保了数据的权威性和准确性。通过这些数据,研究者可以深入分析建筑业的经济贡献及其在宏观经济中的作用,为政策制定和行业规划提供数据支持。

  • CentOS6.4X64安装Oracle11g中文2.05MB最新版本

    本文档主要讲述的是CentOS6.4 X64安装Oracle11g;在CentOS安装oracle11g比安装oracle10g简单很多,oracle可以不设置比如OS内核参数、防火墙、环境变量等,所以实施时推荐安装oracle11g。感兴趣的朋友可以过来看看

  • 发动机零部件质量信息反馈及处理表.docx

    发动机零部件质量信息反馈及处理表.docx

Global site tag (gtag.js) - Google Analytics