王巍,微博ID“onevcat”,圈儿内人称喵神,知名iOS/Unity 开发者,现居日本,就职于LINE。喵神是objc中国项目发起人,开源过广受开发者喜爱的Xcode插件VVDocumenter,主创或参与开发《姬骑士和最后的百龙战争》、《英雄Slash》、《冒险谜题王国》以及《小熊推金币》等多款游戏,个人应用代表有《番茄工作法》(Pomodoro Do)和《云端记账》(Our Money)。 提问:很多新手开发者会纠结于先学习Objective-C还是Swift,不过大家比较倾向于两者都学,那么在同时学习两者的过程中,哪些内容需要重点关注呢? 王巍:其 实不论是Objective-C还是Swift,现在的目的都是写iOS和OS X的App,那么其实对于绝大多是情况来说,语言本身并不是非常重要,使用语言去和Cocoa以及Cocoa Touch交互才是我们日常开发中最常用到的技能。Cocoa的编程思想并没有随着语言的变化发生什么大改变,所以还是应该把对于框架的学习放在首位。当 然在Swift中有些细节和做法会与Objective-C有所不同,对于开发者来说选择其实变得更多了(举个例子,Objective-C中总会使用 NSError指针来获取错误信息,而Swift中我们还可以有Tuple这样的选项)。 现在可能在工作中使用Objective-C的开 发者还是占大多数,我的建议是在使用Objective-C的时候,也顺便可以“想象”一下如何用Swift更好地实现同样的事情。如果不是特别赶进度的 话,甚至可以再用Swift真实地实现一遍。因为两种语言最大的区别就是Swift拥有更强的类型检查和安全性,所以如果能够特别关注这点的话,之后快速 切换到新的语言去就不会有什么问题。 提问:对于学习Swift的开发者,入门以后应该如何进一步提高? 王巍:可 以尽快开始动手实践开发一些App。给自己定一个目标,比如花上几天时间或者一周的时间用Swift做一个能上架的简单App之类的。这个App不需要有 特别复杂的功能,可能就是一个简单的天气查询提醒,或者是展示附近好吃又便宜的餐饮店面。与简单地写个Demo相比,实际做一个真正的App对能力的提升 所在的层次是完全不同的,后者需要更多的全局考虑和综合能力。不少问题只有在实践中才会遇到,才会被解决,而对应的能力也才能被提升。所以入门之后进一步 提升的最好的路子就是实践,然后在实践中再去学习没有掌握的剩下的东西。 另外要注意的是,因为现在Swift还很新,很多东西并没有现成的方案或者所谓的最佳实践。在遇到这样的情况时,最好询问下你身边的资深iOS或者Objective-C的开发者。因为Swift和Objective-C其实是共通的,很多经验是可以参照借鉴的。 提问:TIOBE曾预计Objective-C可能会失去其在移动开发方面的主导地位,而Swift将会给该领域带来新的发展。您是怎么看待iOS语言的趋势呢?有没有可能说将来只学习Swift呢?如果有,那么您预计大概需要多久? 王巍:Swift 作为去年才出现的新星,已经取得了很好的成绩,而现在开发社区对于Swift的态度和预期也都十分积极友好的。可以预想到在可见的未来,Swift的使用 和普及必定将更近一步。Swift相对于 Objective-C的优势十分明显,在进一步成熟后(最主要是的将运行时集成到系统中以及标准库的完善),在iOS开发上逐渐替代 Objective-C的地位可以说只是时间问题。当然这确实是需要花上一定时间来完成迁移,主要是社区的第三方工具和项目的支持程度是需要积累的。将来 只需要学习Swift是完全有可能的(甚至我自己认为就算现在也可以考虑只学习Swift,相对于Swift来说Objective-C显得更简单和容 易,如果学会Swift的话,Objective-C自然也不成问题)。整个Swift社区的成熟可能需要花上两三年时间吧。 提问:我们知道您现在在维护swifter.tips这个站点,其内容来自于您的《Swifter - 100 个Swift必备tips》电子书,能否给我们介绍一下这本书,以及其后期计划。 王巍:这 本书是在我从WWDC回来以后就筹划打算写的,其实主要是作为自己学习Swift时候的一些补充和记录。因为正好赶上从上一家公司离职的节点上,有一段比 较空闲的时间,所以集中地实践很多Swift的东西。这本书是给已经入门Swift,但是却在实际使用中遇到困难的开发者准备的一本小册子。里面总结了 100条可能会用到的小tip,基本是对一些重要概念以及它们的不太被人注意到的特性的讨论。另外也有一些自己总结的比较好的实践的推荐。因为写这本书的 时候Swift语言还非常新,所以很多地方都是带着探索的心理去做的,之后的话会根据Swift的发展进行一些必要的修订。另外现在我正在把这本书翻译成 英文版,虽然可能有点妄想,但是自己内心确实是希望能让世界知道中国也是有开发者活跃在这个舞台上的。顺便要告诉喜欢纸质版那种阅读实感的朋友一个好消 息,现在已经在和出版社合作准备出版,应该会在不久的将来就能见到实体书。 提问:Apple Watch即将发售,针对有计划为该设备开发软件的开发者,可以跟我们聊聊Apple Watch的开发模式、目前的局限、以后发展方向吗? 王巍:Apple Watch现在对于第三方开发者来说更多的还是一块额外的屏幕。WatchKit现在能提供的API也比较简单。对于Apple没有提供表盘上的旋钮以及 表面触感的API这一点,很多开发者也比较失望的。因为新的交互才能带来全新的想法和创意,但是暂时WatchKit没有能给出足够的接口。不过我们也应 该看到这只是WatchKit的第一个版本,之后Apple也承诺会有原生的手表App,可能等一段时间到Apple Watch和WatchKit的完全版面世的时候局面才会很不一样吧。 提问:目前Apple Watch上适合开发什么样的应用,目前Apple Watch会不会只是iPhone应用的延伸,有没有可能出现一些革新性的应用。 王 巍:利用Apple Watch随时抬手可看的特性,一些比较注重通知提醒类的App应该会很有空间。比如朋友圈或者微博里被@了一下,或者是待办事项到期之类。由于屏幕大小 和交互方式限制还是比较多,另外Apple本身对Watch App也有一些限制,所以可以预见在一段时间内Apple Watch只会是iPhone应用的延伸,为iPhone应用提供另一种可能的呈现方式,或者都是一些轻交互的App。但是也并不好说,Apple的开发 者带着镣铐跳舞的能力从来都是不可小觑的。如果之后Apple能进一步开放API的话,可以肯定会爆发出无数的革命性的App,到时候我们的日常生活很可 能会被再一次改变。 提问:您个人博客OneV's Den中的文章可以说篇篇都是精华,风格淡然,技术严谨,能跟大家分享下您在写技术博客方面的经验吗? 王巍:见 笑了。我写博客也有几年时间了,其实能有现在的积累,还是得益于坚持和定位明确。坚持的话,经常关注我的博客的朋友会发现我的更新周期还是比较稳定能在一 个月至少一篇这样。并不是很频繁,但这也算是我给自己定的一个目标。因为如果太久不写确实就会惰性发作很可能就荒废了,所以保持一定的更新频率是很有必要 的。另外就是找准目标:我在博客上写的东西一般都属于比较浅的内容,也希望能尽量面向更多的读者,而我自己也把我的博客定位在一个开发知识普及的层次上。 这个层次的内容我比较能够把握,同时也能有比较多的读者能看完,对自己也算是能坚持写下去的一种动力和理由。 在选题上基本还是实际工作和学 习里接触到的内容,我会尽量试图以新的角度在解读或者梳理一下。这样做可以巩固自己的知识,另外我也坚信如果我能以传播者和教授者的身份把一件事情讲明白 的话,才能代表我自己真的明白了这件事。所以写博客对于我来说就是一个提高和巩固的过程,是学习中重要的一环。 提问:您现在是在日本做开发,那么日本的iOS开发是怎样一种情况呢?有哪些值得借鉴的地方呢? 王巍:可 以说日本的iOS开发者和国内很多开发者不同的一点是对资讯的接触和掌握感觉要更前沿一些,也就是视野要开阔一些。不过可能是由于我接触到的日本开发者正 好都比较喜欢新鲜事物吧。这边的话,团队合作和规范确实很厉害,每个项目基本无论大小,都会有很正式的文档和Wiki,另外像测试和CI这些方面也都很注 意,对程序员来说开发起来特别舒服,基本可以专注于开发的内容。日本开发者另一个优点是做事认真,每一个特性都要反复确认;QA那边过来的Bug报告也十 分详尽,对于定位问题很有帮助。但是另一方面,他们的基础可能比国内的CS出身的开发者同行们要差一些,开发效率也低不少。所以两国开发者其实互相都有需 要学习和借鉴的地方。 提问:您欣赏的国内外iOS开发者有哪些? 王巍:国外的话像Mattt Thompson和Mike Ash都是很厉害的Cocoa开发者,我也一直受益于他们的贡献和分享才能逐渐成长。 国内低调有内涵的高手实在太多了..要写名字的话估计版面不够,在此就容我略过吧.. XD 提问:新年新气象,您在2015年有什么样的规划呢? 王巍:其实暂时没有什么特别远大的目标。 之前定过每年学习一门新语言的目标,今年的话对Go比较感兴趣,应该会花一定时间学习。另外就是继续脚踏实地不断进步和提高,在对现在自己的几个项目继续维护的同时,看看能不能走出舒适区一两次,在专业领域里走得更远一些吧。 本文转载自:CocoaChina |