王巍訪談:關于Swift學習和AppleWatch開發的一些建議

jopen 9年前發布 | 13K 次閱讀 Swift

原文  http://www.cocoachina.com/programmer/20150121/10966.html

王巍訪談:關于Swift學習和AppleWatch開發的一些建議

<div> 
 <p> 本期采訪對象王巍,微博ID“onevcat”,圈兒內人稱喵神,知名iOS/Unity 開發者,現居日本,就職于LINE。喵神是 <a href="/misc/goto?guid=4958862172039007048" target="_blank">objc中國</a> 項目發起人,開源過廣受開發者喜愛的Xcode插件 <a href="/misc/goto?guid=4958862172152772088" target="_blank">VVDocumenter</a> ,主創或參與開發《姬騎士和最后的百龍戰爭》、《英雄 Slash》、《冒險謎題王國》以及《小熊推金幣》等多款游戲,個人應用代表有《番茄工作法》(Pomodoro Do)和《云端記賬》(Our Money)。 </p>

 <p> CocoaChina:很多新手開發者會糾結于先學習Objective-C還是Swift,不過大家比較傾向于兩者都學,那么在同時學習兩者的過程中,哪些內容需要重點關注呢? </p>

</div>

<p> <span>王巍:</span> 其實不論是 Objective-C 還是 Swift,現在的目的都是寫 iOS 和 OSX 的 app,那么其實對于絕大多是情況來說,語言本身并不是非常重要,使用語言去和 Cocoa 以及 CocoaTouch 交互才是我們日常開發中最常用到的技能。Cocoa 的編程思想并沒有隨著語言的變化發生什么大改變,所以還是應該把對于框架的學習放在首位。當然在 Swift 中有些細節和做法會與 Objective-C 有所不同,對于開發者來說選擇其實變得更多了 (舉個例子,Objective-C 中總會使用 NSError 指針來獲取錯誤信息,而 Swift 中我們還可以有 Tuple 這樣的選項)。 </p>

<p> 現在可能在工作中使用 Objective-C 的開發者還是占大多數,我的建議是在使用 Objective-C 的時候,也順便可以“想象”一下如何用 Swift 更好地實現同樣的事情。如果不是特別趕進度的話,甚至可以再用 Swift 真實地實現一遍。因為兩種語言最大的區別就是 Swift 擁有更強的類型檢查和安全性,所以如果能夠特別關注這點的話,之后快速切換到新的語言去就不會有什么問題。 </p>

<p> CocoaChina: <span>對于學習Swift的開發者,入門以后應該如何進一步提高?</span> </p>

<p> <span>王巍:</span> 可以盡快開始動手實踐開發一些 app。給自己定一個目標,比如花上幾天時間或者一周的時間用 Swift 做一個能上架的簡單 app 之類的。這個 app 不需要有特別復雜的功能,可能就是一個簡單的天氣查詢提醒,或者是展示附近好吃又便宜的餐飲店面。與簡單地寫個 demo 相比,實際做一個真正的 app 對能力的提升所在的層次是完全不同的,后者需要更多的全局考慮和綜合能力。不少問題只有在實踐中才會遇到,才會被解決,而對應的能力也才能被提升。所以入 門之后進一步提升的最好的路子就是實踐,然后在實踐中再去學習沒有掌握的剩下的東西。 </p>

<p> 另外要注意的是,因為現在 Swift 還很新,很多東西并沒有現成的方案或者所謂的最佳實踐。在遇到這樣的情況時,最好詢問下你身邊的資深 iOS 或者 Objective-C 的開發者。因為 Swift 和 Objective-C 其實是共通的,很多經驗是可以參照借鑒的。 </p>

<p> CocoaChina: <span>TIOBE曾預計Objective-C可能會失去其在移動開發方面的主導地位,而Swift將會給該領域帶來新的發展。您是怎么看待iOS語言的趨勢呢?有沒有可能說將來只學習Swift呢?如果有,那么您預計大概需要多久?</span> </p>

<p> 王巍:Swift 作為去年才出現的新星,已經取得了很好的成績,而現在開發社區對于 Swift 的態度和預期也都十分積極友好的。可以預想到在可見的未來,Swift 的使用和普及必定將更近一步。Swift 相對于 Objective-C 的優勢十分明顯,在進一步成熟后 (最主要是的將運行時集成到系統中以及標準庫的完善),在 iOS 開發上逐漸替代 Objective-C 的地位可以說只是時間問題。當然這確實是需要花上一定時間來完成遷移,主要是社區的第三方工具和項目的支持程度是需要積累的。將來只需要學習 Swift 是完全有可能的 (甚至我自己認為就算現在也可以考慮只學習 Swift,相對于 Swift 來說 Objective-C 顯得更簡單和容易,如果學會 Swift 的話,Objective-C 自然也不成問題)。整個 Swift 社區的成熟可能需要花上兩三年時間吧。 </p>

<p> CocoaChina: <span> 我們知道您現在在維護 <a href="/misc/goto?guid=4958862172255810786" target="_blank">swifter.tips</a> 這個站點,其內容來自于您的 <a href="/misc/goto?guid=4958862172351682791" target="_blank">《Swifter - 100 個 Swift 必備 tips》</a> 電子書,能否給我們介紹一下這本書,以及其后期計劃。 </span> </p>

<p> 王巍:這本書是在我從 WWDC 回來以后就籌劃打算寫的,其實主要是作為自己學習 Swift 時候的一些補充和記錄。因為正好趕上從上一家公司離職的節點上,有一段比較空閑的時間,所以集中地實踐很多 Swift 的東西。這本書是給已經入門 Swift,但是卻在實際使用中遇到困難的開發者準備的一本小冊子。里面總結了 100 條可能會用到的小 tip,基本是對一些重要概念以及它們的不太被人注意到的特性的討論。另外也有一些自己總結的比較好的實踐的推薦。因為寫這本書的時候 Swift 語言還非常新,所以很多地方都是帶著探索的心理去做的,之后的話會根據 Swift 的發展進行一些必要的修訂。另外現在我正在把這本書翻譯成英文版,雖然可能有點妄想,但是自己內心確實是希望能讓世界知道中國也是有開發者活躍在這個舞臺 上的。順便要告訴喜歡紙質版那種閱讀實感的朋友一個好消息,現在已經在和出版社合作準備出版,應該會在不久的將來就能見到實體書。 </p>

<p> CocoaChina: <span>Apple Watch即將發售,針對有計劃為該設備開發軟件的開發者,可以跟我們聊聊Apple Watch的開發模式、目前的局限、以后發展方向嗎?</span> </p>

<p> 王巍:Apple Watch 現在對于第三方開發者來說更多的還是一塊額外的屏幕。Watch Kit 現在能提供的 API 也比較簡單。對于 Apple 沒有提供表盤上的旋鈕以及表面觸感的 API 這一點,很多開發者也比較失望的。因為新的交互才能帶來全新的想法和創意,但是暫時 Watch Kit 沒有能給出足夠的接口。不過我們也應該看到這只是 Watch Kit 的第一個版本,之后 Apple 也承諾會有原生的手表 app,可能等一段時間到 Apple Watch 和 Watch Kit 的完全版面世的時候局面才會很不一樣吧。 </p>

<p> CocoaChina: <span>目前Apple Watch上適合開發什么樣的應用,目前Apple Watch會不會只是iPhone應用的延伸,有沒有可能出現一些革新性的應用。</span> </p>

<p> 王巍:利用 Apple Watch 隨時抬手可看的特性,一些比較注重通知提醒類的 app 應該會很有空間。比如朋友圈或者微博里被 at 了一下,或者是待辦事項到期之類。由于屏幕大小和交互方式限制還是比較多,另外 Apple 本身對 Watch app 也有一些限制,所以可以預見在一段時間內 Apple Watch 只會是 iPhone 應用的延伸,為 iPhone 應用提供另一種可能的呈現方式,或者都是一些輕交互的 app。但是也并不好說,Apple 的開發者帶著鐐銬跳舞的能力從來都是不可小覷的。如果之后 Apple 能進一步開放 API 的話,可以肯定會爆發出無數的革命性的 app,到時候我們的日常生活很可能會被再一次改變。 </p>

<p> CocoaChina: <span> 您個人博客 <a href="/misc/goto?guid=4958862172462811998" target="_blank">OneV's Den</a> 中的文章可以說篇篇都是精華,風格淡然,技術嚴謹,能跟大家分享下您在寫技術博客方面的經驗嗎? </span> </p>

<p> 王巍:見笑了。我寫博客也有幾年時間了,其實能有現在的積累,還是得益于堅持和定位明確。堅持的話,經常關注我的博客的朋友會發現我的更新周期還是比較穩 定能在一個月至少一篇這樣。并不是很頻繁,但這也算是我給自己定的一個目標。因為如果太久不寫確實就會惰性發作很可能就荒廢了,所以保持一定的更新頻率是 很有必要的。另外就是找準目標:我在博客上寫的東西一般都屬于比較淺的內容,也希望能盡量面向更多的讀者,而我自己也把我的博客定位在一個開發知識普及的 層次上。這個層次的內容我比較能夠把握,同時也能有比較多的讀者能看完,對自己也算是能堅持寫下去的一種動力和理由。 </p>

<p> 在選題上基本還是實際工作和學習里接觸到的內容,我會盡量試圖以新的角度在解讀或者梳理一下。這樣做可以鞏固自己的知識,另外我也堅信如果我能以 傳播者和教授者的身份把一件事情講明白的話,才能代表我自己真的明白了這件事。所以寫博客對于我來說就是一個提高和鞏固的過程,是學習中重要的一環。 </p>

<p> CocoaChina: <span>您現在是在日本做開發,那么日本的iOS開發是怎樣一種情況呢?有哪些值得借鑒的地方呢?</span> </p>

<p> 王巍:可以說日本的 iOS 開發者和國內很多開發者不同的一點是對資訊的接觸和掌握感覺要更前沿一些,也就是視野要開闊一些。不過可能是由于我接觸到的日本開發者正好都比較喜歡新鮮 事物吧。這邊的話,團隊合作和規范確實很厲害,每個項目基本無論大小,都會有很正式的文檔和 wiki,另外像測試和 CI 這些方面也都很注意,對程序員來說開發起來特別舒服,基本可以專注于開發的內容。日本開發者另一個優點是做事認真,每一個特性都要反復確認;QA 那邊過來的 bug 報告也十分詳盡,對于定位問題很有幫助。但是另一方面,他們的基礎可能比國內的 CS 出身的開發者同行們要差一些,開發效率也低不少。所以兩國開發者其實互相都有需要學習和借鑒的地方。 </p>

<p> CocoaChina: <strong>您欣賞的國內外iOS開發者有哪些?</strong> </p>

<p> 王巍:國外的話像 <a href="/misc/goto?guid=4958862172574461121" target="_blank">Mattt Thompson</a> 和 <a href="/misc/goto?guid=4958862172674916791" target="_blank">Mike Ash</a> 都是很厲害的 Cocoa 開發者,我也一直受益于他們的貢獻和分享才能逐漸成長。 </p>

<p> 國內低調有內涵的高手實在太多了..要寫名字的話估計版面不夠,在此就容我略過吧.. XD </p>

<p> CocoaChina:新年新氣象,您在2015年有什么樣的規劃呢? </p>

<p> 王巍:其實暫時沒有什么特別遠大的目標。 </p>

<div> 
 <p> 之前定過每年學習一門新語言的目標,今年的話對 Go 比較感興趣,應該會花一定時間學習。另外就是繼續腳踏實地不斷進步和提高,在對現在自己的幾個項目繼續維護的同時,看看能不能走出舒適區一兩次,在專業領域里走得更遠一些吧。 </p>

 <p> 感謝王巍接受我們本次采訪,以上就是采訪的全部內容。 </p>

</div>

</div>

</div>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!