王巍访谈:关于Swift学习和AppleWatch开发的一些建议

2014-07-12  来源:本站原创  分类:编程  人气:4 

本期采访对象王巍,微博ID“onevcat”,圈儿内人称喵神,知名iOS/Unity 开发者,现居日本,就职于LINE。喵神是objc中国项目发起人,开源过广受开发者喜爱的Xcode插件VVDocumenter,主创或参与开发《姬骑士和最后的百龙战争》、《英雄 Slash》、《冒险谜题王国》以及《小熊推金币》等多款游戏,个人应用代表有《番茄工作法》(Pomodoro Do)和《云端记账》(Our Money)。

CocoaChina:很多新手开发者会纠结于先学习Objective-C还是Swift,不过大家比较倾向于两者都学,那么在同时学习两者的过程中,哪些内容需要重点关注呢?

王巍:其实不论是 Objective-C 还是 Swift,现在的目的都是写 iOS 和 OSX 的 app,那么其实对于绝大多是情况来说,语言本身并不是非常重要,使用语言去和 Cocoa 以及 CocoaTouch 交互才是我们日常开发中最常用到的技能。Cocoa 的编程思想并没有随着语言的变化发生什么大改变,所以还是应该把对于框架的学习放在首位。当然在 Swift 中有些细节和做法会与 Objective-C 有所不同,对于开发者来说选择其实变得更多了 (举个例子,Objective-C 中总会使用 NSError 指针来获取错误信息,而 Swift 中我们还可以有 Tuple 这样的选项)。

现在可能在工作中使用 Objective-C 的开发者还是占大多数,我的建议是在使用 Objective-C 的时候,也顺便可以“想象”一下如何用 Swift 更好地实现同样的事情。如果不是特别赶进度的话,甚至可以再用 Swift 真实地实现一遍。因为两种语言最大的区别就是 Swift 拥有更强的类型检查和安全性,所以如果能够特别关注这点的话,之后快速切换到新的语言去就不会有什么问题。

CocoaChina:对于学习Swift的开发者,入门以后应该如何进一步提高?

王巍:可以尽快开始动手实践开发一些 app。给自己定一个目标,比如花上几天时间或者一周的时间用 Swift 做一个能上架的简单 app 之类的。这个 app 不需要有特别复杂的功能,可能就是一个简单的天气查询提醒,或者是展示附近好吃又便宜的餐饮店面。与简单地写个 demo 相比,实际做一个真正的 app 对能力的提升所在的层次是完全不同的,后者需要更多的全局考虑和综合能力。不少问题只有在实践中才会遇到,才会被解决,而对应的能力也才能被提升。所以入门之后进一步提升的最好的路子就是实践,然后在实践中再去学习没有掌握的剩下的东西。

另外要注意的是,因为现在 Swift 还很新,很多东西并没有现成的方案或者所谓的最佳实践。在遇到这样的情况时,最好询问下你身边的资深 iOS 或者 Objective-C 的开发者。因为 Swift 和 Objective-C 其实是共通的,很多经验是可以参照借鉴的。

CocoaChina:TIOBE曾预计Objective-C可能会失去其在移动开发方面的主导地位,而Swift将会给该领域带来新的发展。您是怎么看待iOS语言的趋势呢?有没有可能说将来只学习Swift呢?如果有,那么您预计大概需要多久?

王巍:Swift 作为去年才出现的新星,已经取得了很好的成绩,而现在开发社区对于 Swift 的态度和预期也都十分积极友好的。可以预想到在可见的未来,Swift 的使用和普及必定将更近一步。Swift 相对于 Objective-C 的优势十分明显,在进一步成熟后 (最主要是的将运行时集成到系统中以及标准库的完善),在 iOS 开发上逐渐替代 Objective-C 的地位可以说只是时间问题。当然这确实是需要花上一定时间来完成迁移,主要是社区的第三方工具和项目的支持程度是需要积累的。将来只需要学习 Swift 是完全有可能的 (甚至我自己认为就算现在也可以考虑只学习 Swift,相对于 Swift 来说 Objective-C 显得更简单和容易,如果学会 Swift 的话,Objective-C 自然也不成问题)。整个 Swift 社区的成熟可能需要花上两三年时间吧。

CocoaChina:我们知道您现在在维护swifter.tips这个站点,其内容来自于您的《Swifter - 100 个 Swift 必备 tips》电子书,能否给我们介绍一下这本书,以及其后期计划。

王巍:这本书是在我从 WWDC 回来以后就筹划打算写的,其实主要是作为自己学习 Swift 时候的一些补充和记录。因为正好赶上从上一家公司离职的节点上,有一段比较空闲的时间,所以集中地实践很多 Swift 的东西。这本书是给已经入门 Swift,但是却在实际使用中遇到困难的开发者准备的一本小册子。里面总结了 100 条可能会用到的小 tip,基本是对一些重要概念以及它们的不太被人注意到的特性的讨论。另外也有一些自己总结的比较好的实践的推荐。因为写这本书的时候 Swift 语言还非常新,所以很多地方都是带着探索的心理去做的,之后的话会根据 Swift 的发展进行一些必要的修订。另外现在我正在把这本书翻译成英文版,虽然可能有点妄想,但是自己内心确实是希望能让世界知道中国也是有开发者活跃在这个舞台上的。顺便要告诉喜欢纸质版那种阅读实感的朋友一个好消息,现在已经在和出版社合作准备出版,应该会在不久的将来就能见到实体书。

CocoaChina:Apple Watch即将发售,针对有计划为该设备开发软件的开发者,可以跟我们聊聊Apple Watch的开发模式、目前的局限、以后发展方向吗?

王巍:Apple Watch 现在对于第三方开发者来说更多的还是一块额外的屏幕。Watch Kit 现在能提供的 API 也比较简单。对于 Apple 没有提供表盘上的旋钮以及表面触感的 API 这一点,很多开发者也比较失望的。因为新的交互才能带来全新的想法和创意,但是暂时 Watch Kit 没有能给出足够的接口。不过我们也应该看到这只是 Watch Kit 的第一个版本,之后 Apple 也承诺会有原生的手表 app,可能等一段时间到 Apple Watch 和 Watch Kit 的完全版面世的时候局面才会很不一样吧。

CocoaChina:目前Apple Watch上适合开发什么样的应用,目前Apple Watch会不会只是iPhone应用的延伸,有没有可能出现一些革新性的应用。

王巍:利用 Apple Watch 随时抬手可看的特性,一些比较注重通知提醒类的 app 应该会很有空间。比如朋友圈或者微博里被 at 了一下,或者是待办事项到期之类。由于屏幕大小和交互方式限制还是比较多,另外 Apple 本身对 Watch app 也有一些限制,所以可以预见在一段时间内 Apple Watch 只会是 iPhone 应用的延伸,为 iPhone 应用提供另一种可能的呈现方式,或者都是一些轻交互的 app。但是也并不好说,Apple 的开发者带着镣铐跳舞的能力从来都是不可小觑的。如果之后 Apple 能进一步开放 API 的话,可以肯定会爆发出无数的革命性的 app,到时候我们的日常生活很可能会被再一次改变。

CocoaChina:您个人博客OneV's Den中的文章可以说篇篇都是精华,风格淡然,技术严谨,能跟大家分享下您在写技术博客方面的经验吗?

王巍:见笑了。我写博客也有几年时间了,其实能有现在的积累,还是得益于坚持和定位明确。坚持的话,经常关注我的博客的朋友会发现我的更新周期还是比较稳定能在一个月至少一篇这样。并不是很频繁,但这也算是我给自己定的一个目标。因为如果太久不写确实就会惰性发作很可能就荒废了,所以保持一定的更新频率是很有必要的。另外就是找准目标:我在博客上写的东西一般都属于比较浅的内容,也希望能尽量面向更多的读者,而我自己也把我的博客定位在一个开发知识普及的层次上。这个层次的内容我比较能够把握,同时也能有比较多的读者能看完,对自己也算是能坚持写下去的一种动力和理由。

在选题上基本还是实际工作和学习里接触到的内容,我会尽量试图以新的角度在解读或者梳理一下。这样做可以巩固自己的知识,另外我也坚信如果我能以传播者和教授者的身份把一件事情讲明白的话,才能代表我自己真的明白了这件事。所以写博客对于我来说就是一个提高和巩固的过程,是学习中重要的一环。

CocoaChina:您现在是在日本做开发,那么日本的iOS开发是怎样一种情况呢?有哪些值得借鉴的地方呢?

王巍:可以说日本的 iOS 开发者和国内很多开发者不同的一点是对资讯的接触和掌握感觉要更前沿一些,也就是视野要开阔一些。不过可能是由于我接触到的日本开发者正好都比较喜欢新鲜事物吧。这边的话,团队合作和规范确实很厉害,每个项目基本无论大小,都会有很正式的文档和 wiki,另外像测试和 CI 这些方面也都很注意,对程序员来说开发起来特别舒服,基本可以专注于开发的内容。日本开发者另一个优点是做事认真,每一个特性都要反复确认;QA 那边过来的 bug 报告也十分详尽,对于定位问题很有帮助。但是另一方面,他们的基础可能比国内的 CS 出身的开发者同行们要差一些,开发效率也低不少。所以两国开发者其实互相都有需要学习和借鉴的地方。

CocoaChina:您欣赏的国内外iOS开发者有哪些?

王巍:国外的话像Mattt ThompsonMike Ash都是很厉害的 Cocoa 开发者,我也一直受益于他们的贡献和分享才能逐渐成长。

国内低调有内涵的高手实在太多了..要写名字的话估计版面不够,在此就容我略过吧.. XD

CocoaChina:新年新气象,您在2015年有什么样的规划呢?

王巍:其实暂时没有什么特别远大的目标。

之前定过每年学习一门新语言的目标,今年的话对 Go 比较感兴趣,应该会花一定时间学习。另外就是继续脚踏实地不断进步和提高,在对现在自己的几个项目继续维护的同时,看看能不能走出舒适区一两次,在专业领域里走得更远一些吧。

感谢王巍接受我们本次采访,以上就是采访的全部内容。

相关文章
  • 王巍访谈:关于Swift学习和AppleWatch开发的一些建议 2014-07-12

    本期采访对象王巍,微博ID"onevcat",圈儿内人称喵神,知名iOS/Unity 开发者,现居日本,就职于LINE.喵神是objc中国项目发起人,开源过广受开发者喜爱的Xcode插件VVDocumenter,主创或参与开发<姬骑士和最后的百龙战争>.<英雄 Slash>.<冒险谜题王国>以及<小熊推金币>等多款游戏,个人应用代表有<番茄工作法>(Pomodoro Do)和<云端记账>(Our Money). C

  • Swift学习资源 2014-06-16

    Swift学习资源 最新内容请查看Wiki 苹果公司在WWDC 2014上宣布了他们将会推出一款新的编程语言,面向iOS和OS X系统的开发人员,这个新的语言被命名为Swift. Swift在iOS 8发布的时候推向市场,用来取代现有的Objective-C语言,对于这个巨大的决定,苹果公司的解释是Swift速度更快,使用起来更加容易.在Swift推出之后,苹果公司应该也不会停止对Objective-C的支持,开发工具会同时支持两种语言. 官方文档及示例 官方文档 目前唯一的完善的文档是官方发布

  • 苹果发布Swift编程语言 - iOS移动开发周报 2013-10-01

    教程 <The Swift Programming Language>:这是苹果官方出版的Swift学习教材,可以免费下载到iBooks中阅读.其中文版翻译项目也在 Github 上火热进行中,地址在这里. <Swift Cheat Sheet and Quick Reference>:出自raywenderlich的一份Swift快速参考手册,现在还比较简单,但它正快速更新中. <Swift Language Highlights: An Objective-C Devel

  • Cocos2d-x学习笔记之开发环境搭建 2015-04-01

    这篇文章主要介绍了Cocos2d-x学习笔记之开发环境搭建,本文使用Visual Studio作为开发IDE,是不同于其它教程的,需要的朋友可以参考下 要问如今什么比较火,当然是手机app了,随之智能机的普及,不断推出了越来越多的手机app,而游戏其实也是一种app.cocos2d-x一款免费游戏开发引擎,本着开源.跨平台的特色,成为了越来越多的手机游戏的开发引擎,所以让我们也来学习cocos2d-x这款游戏引擎吧.通过学习cocos2d-x,我们将了解更多关于游戏开发的知识,比如lua脚本.B

  • 学习linux/unix编程方法的建议,学习Linux的四个步骤 2010-12-13

    学习linux/unix编程方法的建议,学习Linux的四个步骤 文章分类:操作系统 假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐<高级unix环境编程

  • 如何学习Windows Phone开发 2012-04-07

    虽然Windows Phone还没正式进入中国大陆市场,但关注它的国内开发者已经越来越多了,这个时候摆在面前的一个问题就是,如何学习Windows Phone开发?如果你对此感到无从入手,或许这篇文章可以给你一点启发. 新的体验,新的开始 学习Windows Phone开发的目的是为了开发Windows Phone应用,但什么样的应用才算好的应用呢?毫无疑问,我们需要一些榜样作为参照,我们希望了解一个标准的Windows Phone应用应该是怎样的,而这正是学习Windows Phone开发的第

  • swift学习文档(笔记) 2015-04-25

    这篇文章主要介绍了学习swift的笔记,swift最近也比较热,需要的朋友可以参考下 Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单.灵活和有趣.界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向. 变量与常量 变量定义使用var,常量使用let,类型安全,有自动类型推导,注意赋值的=号两边必须有空格.变量和常量名是可以几乎所有字

  • Swift 学习笔记1- Hello world 2014-08-11

    Hello world 在开始写这篇博客的时候,我没用过Objective C,正在学习Swift,所以在这个过程中会犯一些和基础的错误,写博客的目的主要是为了辅助学习,所以当您在骂我"不懂就别瞎鸡吧写,简直是误人子弟"的时候,请让我知道一下,这样哥们才能知道那里错了,以便好好学习,天天向上. OK,言归正传,在介绍一门编程语言的时候,很多图书和资料在前面一个甚至是多个章节都是一堆废话,从程序员的角度来看,我们第一个想知道的可能是"Hello world",然后是变

  • Swift学习笔记之构造器重载 2014-09-28

    Swift 将为所有属性已提供默认值的且自身没有定义任何构造器的结构体或基类,提供一个默认的构造器.这个默认构造器将简单的创建一个所有属性值都设置为默认值的实例. 与函数一样,方法也存在重载,其重载的方式与函数一致.那么作为构造器的特殊方法,是否也存在重载呢?答案是肯定的. 一.构造器重载概念 Swift中函数重载的条件也适用于构造器,条件如下: 函数有相同的名字: 参数列表不同或返回值类型不同,或外部参数名不同: Swift中的构造器可以满足以下两个条件,代码如下: class Rectang

  • Swift 学习笔记2- 类型 2014-08-11

    类型 一般我们总是会把编程语言按照各种纬度做很多归类,比如根据是解释执行还是编译执行的划分成两类.另一个划分纬度就是弱类型还是强类型的,所以可见类型在一门语言是多么的重要. 那么在swift中变量是强类型还是弱类型的呢?它又有哪些数据类型呢? 基础类型 在C, C++ 或者Objective C 中定义了一些基本类型数据,Swift提供了一些自己的基础类型: 整数类形:Int 浮点类型:Double,Float 布尔类型:Bool 字符串类型:String 集合类型 除了以上这些基础类型外,Sw

  • swift学习地址 2014-11-27

    http://www.chinaz.com/swift/chapter1/02_a_swift_tour.html http://www.swiftv.cn/

  • 王纯业的Python学习笔记 下载 2014-10-30

    http://www.51files.com/?1KGYI5W7GYZNX7TH34RT 保证可以下载

  • swift学习 2014-10-31

    中文版书籍: http://numbbbbb.gitbooks.io/-the-swift-programming-language-/ http://www.swiftv.cn/

  • swift学习--点点滴滴--2~storyboard新建viewcontroller 2014-11-02

    问题: storyboard新建viewcontroller后,无法关联第一控制器,显示黑屏,console显示 Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set? 解决办法: In your story board file select the viewController you w

  • 盘点开发者最喜爱的Swift技巧 - iOS移动开发周报 2014-09-15

    新闻 <90后CEO的开源心得:Github 2500 star是如何炼成的>:如果你是一名 iOS 开发者同时还是 Github 的重度使用者,那么你多半见过这个项目:PNChart,一个提供带动画的图表控件.截止到目前为止,PNChart 在 Github上 的 star 数已经超过2500,是一个备受开发者喜爱的 iOS 第三方开源库.该开源库的作者周楷雯,在本文中分享了如何打造一个成功的iOS开源项目. <苹果获反向AirPlay专利,在iPhone上同步播放Apple TV内容

  • Jvascript学习实践案例(开发常用) 2014-02-11

    一些在Jvascript学习实践的实例代码,需要的朋友可以参考下 一个自定义的循环遍历元素文本内容的函数 该函数可以确保在HTML和XML DOM文档中很好的工作,使用该函数,就能够获取任何元素文本内容了 循环遍历元素文本内容 <html> <head> <meta http-equiv="Content-type" content="text/html;charset=gb2312"> <title>一个循环遍历元素

  • 20条学习javascript的编程规范的建议 2014-04-16

    本文总结了20条javascript的编程规范,都是平时项目中使用的时候需要注意的地方,这里推荐给大家,如对大家有所帮助,那便是极好的了. 1.使用js文件管理代码 所有代码尽量放在js文件中,然后再html文件中使用script引入,引入时注意放在body标签后面,并且不使用type或者language. 2.书写缩进 使用4个空白格缩进,注意不要使用tab键进行缩进. 3.断句 注意行长,每行不超过80个字符,超过时要进行适当断句,断句应该再操作符后面进行,最理想的是在逗号(,)后面进行断句

  • J2ME学习之一:移动开发技术基础 2013-11-08

    3G(4G)时代的到来为无线移动技术的发展提供了前所未有的机遇 一 移动设备操作系统PK 市面上现有的手机操作系统,主要有Symbian.WindowsMobile.Linux.Palm.Balckberry和OSX六种.其中Palm资历虽老,但是在Palm公司出售PalmSource且在Treo700w选用WindowsMobile后,Palm已经成为昨日黄花,风光不在.RIM的Blackberry和Apple为iPhone量身定做的OSX属于专用系统,也不具备成为主流操作系统的能力.因此,手

  • 学习 JavaWeb项目开发案例精粹14(新闻发布系统)之一 2013-06-03

    这个用来学习新闻发布系统的记录. 工具可以用myeclipse和eclipse+tomcat插件或者eclipse+server.server用tomcat可以达到效果. 先导入项目到工作环境中.然后再导入数据库,修改项目中数据的相关配置,然后发布或布署.见图如下: 看源码先从单独的类学起走. 先建一个com.ppcms.common包,然后建个一DateUtil类 package com.ppcms.common; import java.util.Date; import java.text

  • 学习Windows Mobile开发系列笔记(win32基本程序框架) 2014-07-09

    一直对Windows Mobile开发很有兴趣.去年已经做过一个这方面的项目了,虽然自己看了很多资料,但是没有系统的学习过.现在应该还只是个入门者吧. 现在想系统的学习一番,我决定把Windows Mobile SDK中的sample都看一遍.我想这样应该能比较全面的掌握Windows Mobile的开发. 边看边写,对自己的学习成果做一个总结,也把心得体会和朋友分享. 今天看了Sample:BasicApp.我安装了wm5.0的sdk,这个程序的代码在 C:/Program Files/Win