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