提升本身應用性能的總結架構篇

OK ,爲何會寫這篇文章呢?由於最近接觸老一些面試者,總感受他們認爲作應用只是純粹的搭個界面,卻不知不單單如此。
 
咱們從哪幾個方面來測試應用的性能呢?
316FDE83 DC35 4EDC 9BB6 412AC17F2782
這裏,由於沒用真機來調試因此不會出現fps選項。下面再來一個
65AB2B29 8E6C 489B BA1A AB7964CEB10A
這裏能夠測試fps ,提示必須真機來運行,fps爲0由於你沒用動。
fps接近於60幀,那麼你的app是至關的流暢,固然代價是要付出不少不少,然而說這些沒有什麼卵用,上面看的是翻天覆地的變化,沒翻天覆地變化覺得你就換換皮膚呢。
 
在沒有不少業務開發者,和架構組的IOS app怎麼提升性能呢?
 
第一:架構方面
誰說咱們app 沒有架構了。咱們能夠參考MVC ,MVVM ,MVP 等一些東西來提煉出咱們本身東西。
咱們網絡請求的數據能夠根據每一個API來建立一個類,這個類用來接受params ,返回json  
1:好比model 數據層咱們能夠接收網絡請求過來的JOSN 或者XML轉化成數據模型來使用,所以這裏面除了你的模型屬性字段,還應該有一個接收json轉化model 的方法。還能夠實現你的copy協議方法,以及歸檔方法方面數據持久化。
2:view 負責視圖元素展現。你能夠在這裏面,
重寫佈局
D3D8D931 064E 4EF3 B4BD E8479334AB06
 
或者cell高度以及給cell上元素經過傳過來的model 賦值。
56BC0348 A24A 4E5F 820B 8D46D6384915
注意紅線部分會觸發樓上重寫佈局方法。
3:你甚至能夠有一個數據持久化的類,來作model 的緩存,好比頭文件能夠有一些save model to cache,update  model to cache ,load model from cache, delete model from cache
E6C6BA18 DC7F 4F9B 9D7E 7F8F081E58C2
 
4:控制器裏作些什麼呢
#import Controllers

#import Models

#import Views

#import Cells
上面導入的頭文件必須分組織隔開
 
 
 
 
#pragma mark - Constants Define
 
一些cell 的標識符,常量定義

#pragma mark - Properties Getter And Setter

get set 方法實現 主要是get 方法能夠在這裏面作懶加載,須要時候再建立,在內存等方面獲得優化,我不少幾乎全部的建立東西都是懶加載,還在抱怨內存和跳轉速度嗎,不妨一試
 
#pragma mark - Controller Life Cycle
控制器生命週期

- (
void )viewDidLoad {
    [
super viewDidLoad];
   
// Do any additional setup after loading the view.
}

- (
void )didReceiveMemoryWarning {
    [
super didReceiveMemoryWarning];
   
// Dispose of any resources that can be recreated.
}

#pragma mark - Setup
設置界面UI 等

#pragma mark - Actions
view上觸發的事件讓控制器通知model等

下面就是不少協議方法

#pragma mark - UITableViewDelegate And UITableViewDataSource


#pragma mark - UICollectionViewDelegate And UICollectionViewDataSource

5:咱們須要一個類來作一些業務邏輯的東西
好比

- (NSArray*)getAlbums;面試

- (void)addAlbum:(Album*)album atIndex:(int)index;數據庫

- (void)deleteAlbumAtIndex:(int)index;

這裏面會導入網絡請求邏輯,數據存儲邏輯,轉化model邏輯。咱們在控制器調用這個類的頭文件API方法能夠良好隔離model ,網絡請求,model ,cache等邏輯。就是下圖
E5EDDCC2 8B67 46DD BBAF 5934AE7003DA
 
也就是下圖的結構,view上觸發一個業務邏輯好比fetch 數據顯示到views。controller 調用API邏輯的fetch數據接口。而後API裏面邏輯有獲取json 轉化model。model的管理cache方面。最後獲取到數據把model給view 的setModel 方法,給View展現數據。
  E5EDDCC2 8B67 46DD BBAF 5934AE7003DA
 
 
下篇從網絡,緩存方面來介紹,而後數據庫,多線程,UI流暢度方面介紹,代碼規範,頁面佈局等介紹。
相關文章
相關標籤/搜索