iOS經驗 優化

2021-10-16 05:14:50 字數 2033 閱讀 1331

優化的主要思路盡可能減少cpu、gpu資源消耗

cpu優化
// 文字計算

[@"text" boundingrectwithsize:cgsizemake(100, maxfloat) options:nsstringdrawinguseslinefragmentorigin attributes:nil context:nil];

// 文字繪製

[@"text" drawwithrect:cgrectmake(0, 0, 100, 100) options:nsstringdrawinguseslinefragmentorigin attributes:nil context:nil];

- (void)image

// bitmapinfo

cgbitmapinfo bitmapinfo = kcgbitmapbyteorder32host;

bitmapinfo |= hasalpha ? kcgimagealphapremultipliedfirst : kcgimagealphanoneskipfirst;

// size

size_t width = cgimagegetwidth(cgimage);

size_t height = cgimagegetheight(cgimage);

// context

cgcontextref context = cgbitmapcontextcreate(null, width, height, 8, 0, cgcolorspacecreatedevicergb(), bitmapinfo);

// draw

cgcontextdrawimage(context, cgrectmake(0, 0, width, height), cgimage);

// get cgimage 從上下文中獲取

cgimage = cgbitmapcontextcreateimage(context);

// into uiimage

uiimage *newimage = [uiimage imagewithcgimage:cgimage];

// release

cgcontextrelease(context);

cgimagerelease(cgimage);

// back to the main thread

dispatch_async(dispatch_get_main_queue(), ^);

});}

gpu優化

離屏渲染觸發

//生成圓角的

- (uiimage *)ht_getcircleimage

/// uiimage加圓角

/// @param cornerradius 圓角

- (uiimage *)ht_getcircleimagewithcornerradius:(cgfloat)cornerradius

網路優化:

定位優化

當dyld把可執行檔案、動態庫都裝載完畢後,會通知runtime進行下一步的處理

runtime

main

優化點

減少動態庫、合併一些動態庫(定期清理不必要的動態庫)

減少objc類、分類的數量、減少selector數量(定期清理不必要的類、分類)

減少c++虛函式數量

swift盡量使用struct

用+initialize方法和dispatch_once取代所有的__attribute__((constructor))、c++靜態構造器、objc的+load

在不影響使用者體驗的前提下,盡可能將一些操作延遲,不要全部都放在finishlaunching方法中

按需載入

IOS開發經驗

基本要點 首先,你的應用程式 不能導致手機故障 比如崩潰或螢幕問題 應用內的所有 資訊中不能用固定值代替可變變數 不要使用任何sdk裡面的私人api 不要使用任何sdk文件裡面沒有列出的功能 不要提及使用者裝置上不存在的硬體功能 如果需要網路連線,在沒有網路的情況下要告知使用者 不要 過度 模仿任何...

ios 經驗記錄

日下內容為日常開發中遇到的問題解決的個人經驗記錄 1.ios 用xib折騰cell時候 整個cell不能命名為contentview 會與系統的contentview衝突 一般命名為viewcell.使用xib時候 命名不能與所在類命名衝突 否則會出現各種奇怪事情。2.tableview手勢監聽在資...

MySQL優化經驗

資料型別盡量用數字型,數字型比字元型的快 2 選擇正確的表引擎 myisam 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要 update 乙個字段,整個表都會被鎖起來,而別的程序,就算是讀程序都無法操作直到讀操作完成。另外,myisam 對於 select count...