關於 iOS 開發

來源:互聯網
上載者:User

標籤:ios   開發   開發人員   

行業現狀

雖然近幾年有大量的開發人員湧入移動端,社會上的各種培訓機構也越來越多,但是優秀的 iOS 開發人員在行業內仍然很少,這一方面是由於創業者很多,另一方面是因為技術更新換代很快,而且開發也需要長時間的經驗積累,以近幾年的 WWDC 大會為例,11年發布的 iOS5 與 iOS4 相比簡直就是跨越性的更新,雖然使用者可能感覺不到,但是從 SDK 的變化來說,開發人員的壓力是很大的;12年發布的 iOS6 帶來了 AutoLayout 、CoreImage這些新的技術以及像 PassKit、CollectionView、State Preservation 這些大量的新的 APIs;iOS7 的變化大家都看在眼裡,UI 的調整往往意味著過去經驗的結束,你要重新思考對細節的處理;iOS8 也有理由說是變化最大的版本,帶來了像 Extensions、Size Classes、Metal、Watch、Swift 等等這些全新的東西。

要學習的東西很多,但是總得來說行業前景還是很好,而且你每年都有機會實現彎道超車。

工作情境

能對產品進行需求分析,設計適合的架構,分解模組等,其次開發,開發中需要有產品觀,畢竟要想從幾十萬的開發人員中脫穎而出,除了技術還要有對產品本身的激情,對工作只是當成一個班去上是萬萬不行的。
能做好技術選型(需要用到的技能在下面的【技能列表】中),保證系統的穩定度。後者會比較麻煩,因為產品不瞭解代碼本身的情況,對一些可能出現的問題並不清楚,而這些只有開發人員最清楚,如果開發人員不說的話就沒人知道了,這也就是項目中的第二種需求,即非功能性需求,處理好這20%的非功能性需求才是真正體現一個開發人員能力的地方。
扯了這麼多,說說實際的工作內容:
前期:
* 需求分析
* 架構搭建,技術選型,如選擇本地化儲存方案 ,網路層的架構設計,可以在這個階段把一些好用的第三方架構引起來,如 FMDB、FLEX、AFNetworking、AsyncSocket 等,這個階段非常重要,因為維護代碼的時間永遠比開發功能的時間長,要儘力建立有彈性、易維護的系統
* 與後台對接,磨合期間偶爾會有“前端後端打架”的情況發生
* 可能還會有其他的前期準備,如建立 RSA/AES 的安全方案、國際化的策略等

中期:
* 參與產品設計
* 完成功能性需求
* 重構與最佳化

後期:
* 修複 Bugs
* GoTo 中期:
* Change 是軟體開發中的真理,不會有結束的時候,除非是一個只有10行代碼的程式

不要敷衍自己開發的產品,否則就是浪費自己的生命。

合作對象

直接對象:
* 產品
* UI
* UX
* 測試
* 後台
* 其他前端

間接對象:
* 所有和公司有直接關係或間接關係的人。

如果你以為只管“打點好”和產品相關的7、8個人你就錯了,討論小組的背後可能有上百人的暗中參與,有些沒有節操的產品會在你面前固執己見、冠名堂皇,在領導面前“通敵賣國”。

技能列表
  • 記憶體管理,不需要防禦式編程,但是大腦一定要清晰的知道自己使用的對象的記憶體情況。
  • UIKit,熟練掌握,能不看文檔就知道常用的控制項有哪些方法以及能做什麼。
  • Storyboard(xib)
  • Auto Layout 和 Size Classes,前者更重要
  • 各種手勢處理
  • KVO\KVC
  • GCD
  • delegate(不要與代理設計模式混淆)
  • Block
  • Notification
  • APNs,遠程通知
  • 檢視狀態儲存

其實開發中大多數問題都是“臨時”遇到的問題,只有平時積累的夠多,才能遊刃有餘的解決。上面的這些技能只能算是拋磚引玉,更多地學習主要還是在自己遇到問題或者遇到不懂的知識點的時候,每一個困難都是財富,像CoreData、設計模式之類的技能你難道不學嗎?興趣和遇到問題的切入點很重要,不要敷衍自己,多看書,書看的越多,越覺得自己無知。

對了,混合開發也要關注一下。

關於Objective-C 和 Swift

對目前的 Swift 來說,我是堅定的反對者,這種立場其實和我最開始時不一樣:

Swift 目前非常不穩定,連 Xcode 都對它相容的不好,每次 Swift 有個稍大的更新就像是把項目推倒重來,而且也不可能完全只用 Swift 來開發一個項目,基於 Objective-C 和 C 的架構有很多,iOS 是開發離不開 C 的。
除此之外,我覺得 OC 比 Swift 更加靈活,前者更依賴運行時,後者幾乎就是編譯時間,OC 能做很多 Swift 做不了的事情,如運行時的關聯對象等,不過這並不是說 Swift 不重要,只是一定要排一個優先順序的話,我覺得短期內 Swift 無法對 Objective-C 造成太大影響,所以先學好 OC 還是更好一些,畢竟技多不壓身嘛

學習資源
  • 官方資源
  • Ray Wenderlich
  • objc.io
  • Mattt Thompson
  • 《Objective-C基礎教程》
  • The Big Nerd Ranch的英文原版教程:《Objective C Programming The Big Nerd Ranch Guide 2nd Edition》、《iOS Programming - The Big Nerd Ranch Guide 4ed》,後者有中文版
  • 《Objective-C進階編程:iOS與OS X多線程和記憶體管理》
  • 《Effective Objective-C 2.0 編寫高品質iOS與OS X代碼的52個有效方法》,涵蓋的點很多,但是有些地方該深入的時候沒有深入
  • 《深入理解電腦系統》
  • 在社區中交流,如 Stackoverflow、GitHub 或國內的一些論壇,交流總是有用的。

關於 iOS 開發

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.