王巍,微博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比較感興趣,應該會花一定時間學習。另外就是繼續腳踏實地不斷進步和提高,在對現在自己的幾個項目繼續維護的同時,看看能不能走出舒適區一兩次,在專業領域裡走得更遠一些吧。
第一時間關注最新移動開發相關信息和技術,請關注mobilehub公眾微信號(ID: mobilehub)。
本文為CSDN編譯整理,點擊「閱讀原文」可查看全文並參與討論。
如果您喜歡這篇文章,請點擊右上角「…」將本文分享給你的朋友。