優化的主要思路盡可能減少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...