1-13-2016

2015年匆匆而過,感覺這一年看了很多收,學習了很多,但一直效率很低,常常看了的東西都記不住,筆記也做了很多,但返回來一看,又回憶不起什麼來了,所以以後打算用一個新的方式:看資料時用筆在紙上記起來,最後總結完之後在以BLOG 的形式再講述一次,這樣,一方面看BLOG可以有很完整的思路回想,另一方面保留筆記可以增加當時的映像。

2016的工作計劃:

  1. 重新完整的整理一下IOS開發的相關知識,完成後,可以在後期加入C++/C方面的知識。
  2. 重新整理一下android開發的相親知識。

ios優先,是因爲ios的工資比android高,且ios項目最近做的比較少,android項目最近做的比較多。

先說ios
ios知識的整理主要從兩方面進行開展:
1. 基礎知識的整理回顧, 主要從obj-c語言層面的基礎知識入手。
2. 從IOS歷史版本入手,對各個版本中的新特性進行整理歸納總結,因爲IOS版本的發展對於開發於用戶使用上都是一次又一次的革新,對每個版本的總結歸納好,纔是對IOS開發的完整了解的體現。

歷史版本:

ios 4版本的新特性

  1. 短暫的多任務:因爲沒用過IOS 3不知道是否在那個年代,當用戶從當前應用退出的時候,應用的內存是否也一併清理了?或者再進入應用時,重新打開新的應用,無法對過去短暫的狀態進行記錄。 從ios 4開始,iphone4開始出現,蘋果提出了多任務的概念,但只是”有限的多任務“,當應用退出後,應用掛起,不馬上回收。
    其中體現在:

    • 應用進行休眠時,可申請短暫的時間,執行保存等任務(具體能怎麼利用要深入研究一下)。
    • local notification(本地通知),應用在沒有啓動的情況下也可以通知之前的註冊,完成特定的功能(在UIApplicationDelegate的回調方法中實現通知的回調,要深入瞭解一下)。
  2. 多分辨率的解決方案的提出:因爲當時,iphone 3GS的用戶量很大,分辨率是 320* 480,新的iphone 4的推出,從屏幕分辨率上有了一個很高的提升(480* 900??),爲了實現兩個手機分辨率的兼容,不得不提出一個解決方案。
    解決方案大概是:

    • 在設計階段:以高分辨率的大小進行設計,效果圖做相對應的縮小以兼容小分辨率的效果圖。
    • 在截圖階段:高分辨率的圖片,如icon.png以[email protected]的命名方式進行保存,低分辨率的圖片保持icon.png的命名方式不變。
      PS: 應用在運行的階段,自動對資料進行適配操作,分別獲取對應分辨率上的圖片進行顯示。(問題:那時間是怎麼做控件的精確定位的呢?請不起來了???)
  3. Block Objects 閉包的提出

  4. GCD 多線程新的解決方案

  5. UI自動化測試工具: UIAutomation 測試用JS腳本編寫,感覺不好用,但自動化測試正規來說,還是要的。除了自動化測試工具,當是我還用到了接口測試的工具,生成一個應用,通過點擊對接口的輸出進行監控來測試,感覺還是很好用的。

  6. 新API:

    • ImagePicker
    • NSCache(當內存不夠時,可自動對舊的資源空間進行回收,可用於圖片加載框架中的緩存處理)
    • Game kit
    • Core Location(手機定位相關API)
    • Map kit(手機地圖)
  7. Message ui Gig one:應用中要進行短信發送操作時,系統提供了一個Controller進行調用,相關的發送都在對不的Controller中進行。

  8. 自定義鍵盤輸入(這個是TextView inputView等相關的內容嗎?)

ios 5版本的新特性

  1. ARC( Auto Reference Counter)自動引用計算:相對於MRC(手動引用計算)來說,ARC不要需要在代碼中添加 retain, release, autorelease的標示,相關的添加由編譯器通過對代碼進行掃描,按時一定的規則,在代碼中進行添加。所以不要把ARC相像成java裏面的內存自動管理。出於對手機性能的考慮,手機版本的系統沒有引入自動內存管理機制,而ARC只是爲了方便我們代碼編寫,不用過多去考慮內存的釋放問題,而把注意力迴歸來邏輯上,提交開發效率。

  2. StoryBoard 故事版的提出:在過去的UI開發當中,爲方便界面的開發,常常一個Controller會對應一個用於UI編輯的nib文件,由UI Bridge進行編輯。

    • StoryBoard提出之後,所有的nib文件中的UI界面,都可以集中在一個文件裏面進行編輯。
    • 另一方面,界面間的跳轉關係都可以在這個文件中一目瞭然的進行呈現,一定程度上可以充當業務流程圖的功能。
    • 過去,爲了兼容IPAD的應用開發,在原來的手機版本的nib文件的基礎上,新建IPAD的NIB文件,通過代碼對硬件進行判斷,讀取相應的nib文件。StoryBoard提出後,只要建立一個文件,在文件中現次建立對就的UI,在UIAppliationDelegate中通過對硬件進行判斷,讀取想應的StoryBoard文件進行IPAD的適配。

ios 6 版本的新特性

  1. 應用內支付(in-app purchase)
  2. Auto Layout
  3. 新的控件:

    • 列表上拉刷新 UIRefreshControl
    • 列表頭,列表腳 TableViewHeader, TableViewFooter
    • 瀑布流控件 UICollectionView
  4. API的更改

    • UIViewController 內存警告回調方法的更改:以前是回調 -viewDidunload和-viewWillUnload方法,改成了 -didReceiverMemoryWarming
    • UIViewController 界面狀態保存的回調方法:?????????????
    • UDID被棄用

ios 7 版本的新特性(庫克時代)

  1. 風格由”擬物化“ 轉變成”扁平化“: 系統的風格發生了翻天覆地的變化,在當時,對舊版本的兼容發起的挑戰。
  2. 多任務功能的增強:
    • fetch
    • remote - notification
  3. 新的API
    • UIKit新的動態效果
    • Sprite kit 遊戲開發包,此時Cocos2dx已經大行其道,Sprite Kit的生存空間很窄
    • Game Center 的改進
    • Map Kit 功能的強化
    • 新的 Store Kit 訂單系統,對之前的”應用內支付“進行了改進
    • Text Kit 可實現圖片文字環繞效果
  4. Xcode 新特性: Asset Catalog 新的圖片管理系統 / Image Slicing
  5. 系統中加入了下拉任務欄,與android相像,但只能支持系統應用中的任務

ios 8 版本的新特性

  1. Switch 腳本語言的支持
  2. 下接任務欄中,可以加入第三方軟件的任務通知(widget)
  3. Size Class : 新的屏幕兼容開發的方案,這時手機的屏幕分辨率越來越多了,從iphone4到iphone6s-plus,同時有 ipad-air, ipad-mini2, ipad-mini3…..對屏幕兼容方面發起了挑戰。
  4. 新的指紋識別API
  5. 開放了輸入法和第三方鍵盤

ios 9 版本的新特性

  1. 開發默認使用Https加密通訊協議,可通過修改配置,支持原來的Http協議
  2. 多系統的增強:
    • 畫中畫視頻的支持 Av Kit
    • 分割視圖 Split View : 可實現一個屏幕同時運行兩個應用,但兩個應用要同時在Size Class實現Compact width和 Regular Higth的UI視圖
    • Slide Over 臨時調出,滑動覆蓋 (??????)
  3. 新的 Watch OS 2 系統
  4. 新的界面測試工具 XCUITest
  5. obj-c 引入泛型
  6. 應用下載對圖片資源進行匹配選擇,實現下載包的瘦身。(運用Asset Catalog, Bitcode)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章