理解活在Iphone中的那些App (四)

App生存環境之宿主環境git

  終於開始說一些技術性的話題了,從這裏開始的一些技術細節的東西,之前我也沒有太刻意的注意過。爲了寫這個也是剛剛看了一點資料,若是有紕漏,懇請指出。程序員

  一個App生存的宿主環境主要分紅兩個部分,一個是硬件環境。一個是軟件環境。在IOS的生態圈中,這兩個環境相對於Android來講是比較封閉的,可是,得益於封閉。整個系統的兼容性和穩定性遠遠高於Android。沒有那麼多的碎片化的設備,沒有那麼多的硬件配置,沒有那麼多的私自改造的Api,也沒有讓人痛苦不堪的各類大小的屏幕。你的App在部署到用戶機器上的時候,可以爲用戶帶來視覺和交互上高度的一致性。你的App要麼生活在Iphone中,要麼生活在Ipad,或者itouch中。可是都是活在一個叫作IOS的系統中。github

  先從硬件講起吧,先看個圖(有圖有真相)。緩存

 

  從這張圖中咱們可以很是直觀的看到幾乎全部運行IOS系統的硬件性能指標。這些硬件性能,決定了你的App的性能上限。對於專門開發App的應用層程序開發者來講,可能對硬件的性能指標已不是很關心了。並且,在這張圖中咱們也可以看出,最近幾年,IOS設備的硬件性能也是日新月異。愈來愈人以爲硬件不再是什麼限制性因素。於是也多少有點被忽略的意思,可是對應用層的開發者來說,可能不須要知道,CPU的具體的排線和實現原理,也不須要知道內存顆粒的實現技術。可是程序打交道的幾個主要部件的性能咱們仍是須要關注一下的。按照馮諾依曼的模型,有四個主要部件的性能仍是得多多少少知道一些。架構

  CPU:程序運行的地方,是設備的運算核心和控制核心。你的App變成指令後就是在這裏活動。蘋果主要使用基於Arm架構的處理器。在最初的設備中,還只是單核的Arm處理器,後來變成了2核處理器。多核可以爲你的App帶來更好的併發性能。固然,隨着處理器自己性能的提高,單位時間內你的App可以作的事情也愈來愈多。原本一分鐘內,你的app能夠數100個數,到了Iphone5上後,就可能能數1000個數了。併發

  內存:App在運行時存儲自身和所須要資源的地方。打個比方,就像是App的彈藥庫,但又不止是彈藥庫。是你的App的臨時性記憶存儲體。他的容量越大,也就意味着單位時間內可以load進來的數據量就越多。隨着數據量的增多,程序的性能就會越好。不用浪費不少的時間去低速存儲設備後,龜速的Loading數據。app

  I/O:數據持久化的地方。永遠記錄着一些App讓它記住的東西,直到由於某些非人力無可抗拒的因素被毀掉,好比噁心的快遞暴力分揀。他時你的App的後勤。iphone

  屏幕:這但是臉啊。如同看一個妹子,你先看到就是這張臉。而IOS設備的屏幕,也是apple一直標榜的。不過說真心話,iphone的大猩猩屏的確剛剛的。色彩豐富,並且抗摔。題外話了。言歸正傳,對於應用層的開發來見。咱們在幕後作的全部的努力都是爲了,最後咱們的App是以怎樣的形象展示的在用戶面前的。然而,關於界面元素的佈局,大小,圖案,配色等等關鍵性因素倒是由UI來決定的。而咱們可以作的,就是盡最大的努力,還原UI的設計。從開發層面講,須要咱們關注的可能只是屏幕大小了。其餘的一些細節指標,沒有太大的關注價值。函數

  

  說完了硬件,那麼再說說軟件。那個固然得從最核心的操做系統——IOS提及。IOS與Mac OS同樣都是以Darwin爲基礎的。而Darwin是以FreeBSD爲基礎構建起來的微內核結構操做系統(那個繼續這麼一個名詞一個名詞解釋下去,真的沒完了,關於微內核和宏內核的區別,仍是本身Google吧)。因此IOS也是一個類Unix操做系統。若是你之前是Linux用戶,在IOS設備越獄以後,你會灰常開心的發現,各類命令行都能用,什麼ls了,ln了。並且,有大神級任務,在越獄的Iphone上跑LAMP,這纔是真正的「移動」互聯網啊。知道了IOS其實也是一個類Unix操做系統後,咱們就能幹不少比較高端的事情了。好比事情一些比較底層的系統命令來提升程序性能。最近網上一個比較火的開源圖片緩存庫FastImageCache就使用了memsy和mency(https://github.com/path/FastImageCache)。之前看過一個大神的微博說,性能就在那裏,只要你死扣IO,死扣CPU死扣一切,性能就來了。佈局

  操做系統是咱們的程序與硬件之間的中間層。它爲咱們屏蔽掉了那些繁瑣的硬件操做,只給了咱們簡單明瞭的函數接口。同時也是咱們的App運行時最爲關鍵的虛擬環境。他更像是IOS硬件設備的一個地方官,而咱們的App就是其中的一個子民。App的生老病死以及一切都是受到IOS的管轄的制約。IOS給你的App分配資源,也會在你的App貪得無厭的消耗了過多資源以後對其執行死刑。因此,要時刻記住,生活在這個圈子裏的不僅有你本身的App,還有一個至高無上的操做系統。其實,app與操做系統打交道,也是經過那些必定訂好了的函數接口。app雖然有生命週期,可是他不是智能的。他知道的全部事情,都是程序員寫死在裏面的。

  而關於IOS操做系統的更多的細節,能夠參加apple 官網。

相關文章
相關標籤/搜索