非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/205611

Paris Buttfield-Addison是Secret Lab的联合创始人、移动应用工程师,以及游戏设计师。Secret Lab是一家游戏开发公司,他们致力于使技术变得简单又有趣。Paris拥有计算学博士学位,同时也是一位历史学士。他之前作为产品经理为硅谷的Meebo公司工作,这家公司在2012年被Google收购。他撰写了一系列关于iOS和游戏开发的技术书,其中包括《学习Objective-C与Cocoa框架》,《iOS游戏开发攻略》,《Swift与Cocoa框架开发》,以及《Unity移动游戏开发》。

问:作为一位历史专业的学士,你是怎么变成一位iOS高手以及游戏开发专家的?

除了学习中世纪历史外,我还有其他几个计算专业的学位(荣誉学位以及博士学位)。我发现学习历史的背景让我对科技的理解和很多人都不一样,我认为历史很有趣。

问:在Swift 2.0之后,《Swift与Cocoa框架开发》这本书是否过时?书中有没有哪些地方需要修改?

Swift 2.0有一些语法变化,但是这门语言的哲学却没有任何改变。《Swift与Cocoa框架开发》仍然很有用,如果出现任何过时的地方——我们会发布一个针对这本书的变更日志,当你用Swift 2.0进行编程时,这份日志会告诉你有哪些地方和印在书中的代码不同,我们会在不久之后把这份变更日志发布在我们的博客上(http://secretlab.com.au/blog/| e9b49d8ef7816e77c1d19efe698550cb6 |)。同时我们也在筹备另外一本书,叫做《学习Swift》,这本书是最新的,并且覆盖了Swift 2.0的内容。

问:在你看来,开源会对Swift的生态环境以及它和Android的关系造成什么影响?

我认为变化不会太大。上一个苹果开发者语言Objective-C在iOS出现之前是非常晦涩的,而Swift吸取了很多经验。我认为,如果说开源Swift会带来任何变化的话,那就是人们可能会开始用Swift来写服务器软件,这样Swift就会形成一个更大、更好的社区。

我不认为这件事对于iOS和Android的关系会造成影响;现在来看,Java是一种很老的语言,甚至可以说是一种遗留语言,而Swift是现代的。如果Google把Android环境更新为现代化的语言(比如Swift)会是一件很酷的事——事实上,Google已经有了一种现代语言(Go),只是现在还没把它用在Android上!

问:Swift从其他语言那里吸取了哪些成分?你最喜欢Swift的哪些特性?

Swift从Rust和Python这样的语言中借鉴了很多东西。我最喜欢的Swift特性是它在内在安全性方面做出的努力;要想用Swift犯错并不容易,因为它强制执行了很多“优秀风格”。

Swift的设计初衷就是成为一门安全的语言。C语言中的许多缺陷(比如意外使用null指针)都很难在Swift中遇到。Swift非常重视强类型化,除了一些极为特殊的情况之外,它是不允许对象为null的。

问:为什么很多公司还没在生产环境中应用Swift?

因为Swift是崭新的,而且正在经历改变。Swift 2.0已经发布,我怀疑(但无法确定)苹果不会再改动很多了,这就意味着Swift会被更多移动开发者用在他们的产品应用中。就像比特代码一样,App Store自己会为下载或购买应用的用户编译和连接应用,所以可以说Swift对于未来应用来说是至关重要的。

问:Swift在未来会彻底取代Objective-C吗?你建议初学者先学Objective-C还是先学Swift?

对于我们来说Swift已经完全取代Objective-C了!对于真正的开发者来说,这种替代随时都可能发生。这是重要的一步。对于初学者来说,现在已经没有必要再去学Objective-C了!

Objective-C曾经是一门功能非常强大的语言。它与C++的主要区别是它是一种动态语言。在任何一门面向对象的语言中,都需要将函数绑定到它们处理的具体数据,而这一绑定要么在编译代码时进行,要么在运行时进行。C++使用静态绑定,这会提高运行时性能,但降低了灵活性。Objective-C采用动态绑定,它要稍慢一些,但大大增强了语言的灵活性。

然而,Objective-C也有自己的问题。因为它是以C语言为基础的,所以它从父语言那里继承了大量古怪的特性,比如预处理器和指针运算。这些功能尽管非常强大,但会降低代码的可读性和安全性。苹果公司在保持Objective-C的现代化方面做得非常出色,但即使是这门语言的死忠粉也认为这门语言有些过时了。

于是Swift应运而生了。Swift是一门新的语言,旨在让iOS和Mac应用程序的开发变得更轻松、更快速、更安全。它的设计目标是更容易掌握,且在防范程序员错误方面比Objective-C做得更好;事实上,苹果公司将它描述为“没有C的Objective-C”。因为Swift是用LLVM(Objective-C使用的工具集)生成和编译的,而且使用了Objective-C运行时,所以我们可以编写一个同时使用C、Objective-C和Swift的App。

问:在学习Swift之前,是否有必要学习C语言?

不需要!你可以把Swift作为开始,这是一种伟大、有趣、简单,而且安全的语言。当你想要理解程序的内在工作方式时,你可以稍后再学习C语言。

问:一位iOS开发高手需要掌握什么样的知识框架?

我也会做很多设计——构建好的移动应用(或者现今任何形式的应用)需要好的设计感!学习设计吧,因为设计能够更好地影响他人。

更多精彩,加入图灵访谈微信!

《Swift与Cocoa框架开发》作者Paris Buttfield-Addison:你的编程生涯可以从Swift开始!的更多相关文章

  1. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  2. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  4. ios – Testflight无法安装应用程序

    我有几个测试人员注册了testflight并连接了他们的设备……他们有不同的ios型号……但是所有这些都有同样的问题.当他们从“safari”或“testflight”应用程序本身单击应用程序的安装按钮时……达到约90%并出现错误消息…

  5. ios – 异常断点处于活动状态时,应用程序在启动时崩溃

    我刚开始继续开发一款适用于商店的传统iPad应用程序.我注意到项目中的异常断点未启用.当我启用它时,应用程序在启动时崩溃,但在输出窗口中没有给出任何信息,而在线程视图中只有相当无用的信息(见下文)我试着解决它..>将Autolayout设置为关闭.>通过编辑和重新保存故事板文件..但到目前为止没有运气.我的猜测是,故事板中的某些内容被破坏了,因为AppDelegates“确实完成了启动……”

  6. ibm-mobilefirst – 在iOS 7.1上获取“无法安装应用程序,因为证书无效”错误

    当我的客户端将他们的设备更新到iOS7.1,然后尝试从AppCenter更新我们的应用程序时,我收到了上述错误.经过一番搜索,我找到了一个类似问题的帖子here.但是后来因为我在客户端使用AppCenter更新应用程序的环境中,我无法使用USB插件并为他们安装应用程序.在发布支持之前,是否有通过AppCenter进行下载的解决方法?

  7. ios – 视图的简单拖放?

    我正在学习iOS,但我找不到如何向UIView添加拖放行为.我试过了:它说“UIView没有可见的接口声明选择器addTarget”此外,我尝试添加平移手势识别器,但不确定这是否是我需要的它被称为,但不知道如何获得事件的坐标.在iOS中注册移动事件回调/拖放操作的标准简单方法是什么?

  8. ios – 如何使用Objective C类中的多个参数调用Swift函数?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  9. ios – Swift 4添加手势:覆盖vs @objc

    我想在我的视图中添加一个手势,如下所示:但是,在Swift4中,我的编译器给出了以下错误:建议添加@objc以将此实例方法公开给Objective-C.实现此目的的另一个选项将覆盖touchesBegan()函数并使用它来处理点击.我试图以“Swift”的方式做到这一点,而不必带入Obj-C.有没有纯粹的Swift方式来添加这个轻击手势而不使用@objc?

  10. ios – 什么控制iTunes中iPhone应用程序支持的语言列表?

    什么控制iPhone应用程序的iTunes页面中支持的语言?

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部