ParisButtfield-Addison是SecretLab的联合创始人、移动应用工程师和游戏设计师。SecretLab是一家游戏开发公司,致力于让技术变得简单有趣。巴黎有博士学位。计算机专业和历史学学士学位。他曾在硅谷的Meebo担任产品经理,该公司于2012年被谷歌收购。他是一系列关于iOS和游戏开发的技术书籍的作者,包括《学习Objective-C与Cocoa框架》、《iOS游戏开发攻略》、《Swift与Cocoa框架开发》,和《Unity移动游戏开发》。Q:作为一名历史专业的学生,??你是如何成为iOS高手和游戏开发专家的?除了研究中世纪历史,我还拥有其他几个计算机学位(荣誉学位和博士学位)。我发现学习历史作为背景使我对技术的理解与许多人不同,我认为历史非常有趣。Q:《Swift与Cocoa框架开发》这本书在Swift2.0之后就过时了吗?书中有需要修改的地方吗?Swift2.0有一些语法上的变化,但没有关于语言哲学的变化。《Swift与Cocoa框架开发》仍然有用,如果有任何内容已过时-我们将发布本书的更新日志,它会告诉您在使用Swift2.0编程时本书中出现和印刷的内容我们将很快将此更新日志发布到我们的博客上(http://secretlab.com.au/blog/|e9b49d8ef7816e77c1d19efe698550cb6|)。同时我们也在准备另一本名为《学习Swift》的书,这本书是独一无二的,涵盖了Swift2.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中的许多错误(例如意外使用空指针)在Swift中很难遇到。Swift非常重视强类型,除了一些非常特殊的情况,它不允许对象为空。问:为什么很多公司不在生产中使用Swift?因为Swift是全新的并且正在经历变化。Swift2.0已经发布,我怀疑(但不能确定)Apple不会有太大变化,这意味着Swift将被更多的移动开发者用于他们的产品中。与bitcode一样,AppStore本身为下载或购买应用程序的用户编译和链接应用程序,因此可以说Swift对应用程序的未来至关重要。Q:未来Swift会不会完全取代Objective-C?你建议初学者先学Objective-C还是先学Swift?对我们来说,Swift已经完全取代了Objective-C!对于真正的开发人员来说,这种替代随时可能发生。这是重要的一步。对于初学者来说,现在没必要学Objective-C!Objective-C曾经是一种非常强大的语言。它与C++的主要区别在于它是一种动态语言。在任何面向对象的语言中,函数都需要绑定到它们处理的具体数据,而这种绑定要么发生在代码编译时,要么发生在运行时。C++使用静态绑定,这提高了运行时性能但降低了灵活性。Objective-C使用动态绑定,速度稍慢但大大增强了语言的灵活性。然而,Objective-C有其自身的问题。因为它是基于C语言的,所以从母语中继??承了很多奇怪的特性,比如预处理器和指针运算。这些功能虽然非常强大,但会降低代码的可读性和安全性。Apple在保持Objective-C的现代性方面做得很好,但即使是该语言的铁杆粉丝也觉得该语言有点过时了。于是斯威夫特应运而生。Swift是一种新语言,旨在让开发iOS和Mac应用程序变得更轻松、更快速、更安全。它被设计成比Objective-C更容易学习和更好地防止程序员错误;事实上,Apple将其描述为“没有C的Objective-C”。因为Swift是用LLVM(Objective-C使用的工具集)构建和编译的,并且使用Objective-C运行时,我们可以编写一个同时使用C、Objective-C和Swift的应用程序。Q:学Swift之前一定要先学C语言吗?不必要!您可以从Swift开始,它是一种很棒、有趣、简单且安全的语言。当您想了解程序的内部工作原理时,您可以稍后学习C。Q:iOS开发高手需要掌握什么样的知识框架?我也做了很多设计——构建一个好的移动应用程序(或现在的任何应用程序)需要良好的设计感!学习设计,因为设计可以更好地影响他人。
