command + shift + o
command + shift + j
commadn+shift+e
Command+[ -> 代碼塊左移ios
Comamnd+] -> 代碼塊右移git
Tab -> 接受代碼自動完成提示github
Esc -> 顯示代碼提示web
Command+B -> 編譯數組
Command+R -> 運行xcode
Control+F -> 前移光標緩存
Control+B -> 後移光標安全
Control+P -> 光標移到上一行性能優化
Control+N -> 光標移到下一行架構
Control+A -> 光標移到行首
Control+E -> 光標移到行尾
Control+T -> 交換光標左右字符
Control+D -> 刪除光標右邊的字符
Control+K -> 刪除本行
Control+L -> 將光標所在位置置於窗口中央
按住Option雙擊鼠標 -> 搜索文檔
Command+Y -> 激活/禁用斷電
Command+Control+Y -> 繼續運行
F6 -> 單步跳過
F7 -> 單步跳入
F8 -> 跳出
Cocoa Touch 框架:
Cocoa Touch Layer |
---|
Media Layer |
Core Services Layer |
Core OS Layer |
Cocoa Touch層:包含建立iOS應用程序所需的關鍵框架。上至實現應用程序可視界面,下至與高級系統服務交互,都須要該層技術提供底層基礎。基本系統服務和關鍵框架(Address Book UI、UIKit等)UIKit Framework
Media層:包含圖形技術、音頻技術和視頻技術,這些技術相互結合就可爲移動設備帶來最好的多媒體體驗,更重要的是,它們讓建立外觀音效俱佳的應用程序變得更加容易。Core Graphics Framework
,Core Animation Framewrok
,AV Foundation Framework
Core Services層:爲全部的應用程序提供基礎系統服務。可能應用程序並不直接使用這些服務,但它們是系統不少部分賴以建構的基礎。Core Data Framewrok
, Core Foundation Framework
,Foundation Framework
Core OS層:Core OS層的底層功能是不少其餘技術的構建基礎。一般狀況下,這些功能不會直接應用於應用程序,而是應用於其餘框架。可是,在直接處理安全事務或和某個外設通訊的時候,必需要應用到該層的框架。
Accelerate Framework
,System Framework
---
1.開啓一個時間,CADisplayLink(每次屏幕屏幕都會觸發)
2.每次觸發,遞增index只加載一幀,以前的圖像當即釋放
YY_WebImage 若是要顯示動圖,須要使用YYAnimatedImageView
利用KVC修改imageView的類型
[self setValue:[[YYAnimatedImageView alloc] init] forKey:@"imageView"]
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); //獲取到gif動圖的幀數 size_t count = CGImageSourceGetCount(source); UIImage *animatedImage; //判斷圖片數量,若是是1,直接返回靜態圖像 if (count <= 1) { animatedImage = [[UIImage alloc] initWithData:data]; } else { //建立圖像數據:真正消耗性能的根源 NSMutableArray *images = [NSMutableArray array]; NSTimeInterval duration = 0.0f; for (size_t i = 0; i < count; i++) { //取出第i幀 CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL); //累加時長 duration += [self sd_frameDurationAtIndex:i source:source]; //把圖像添加到數據 [images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]]; //釋放圖像 CGImageRelease(image); } if (!duration) { duration = (1.0f / 10.0f) * count; } //設置動圖數組 animatedImage = [UIImage animatedImageWithImages:images duration:duration]; } CFRelease(source); return animatedImage;
模擬器:Color Offscreen-Rendered
離屏幕渲染
hidden
contentView
上alpha
//1.柵格化,美工術語:將cell中的全部內容,生成一張獨立的圖像,在屏幕滾動時,只顯示圖像 self.layer.shouldRasterize = YES; //1.1 柵格化,必須指定分辨率,不然默認使用*1,生成圖像 self.layer.rasterizationScale = [UIScreen mainScreen].scale; //2. 異步繪製:若是cell比較複雜,可使用 self.layer.drawsAsynchronously = YES;
你是怎麼測試性能的呢?使用單元測試
對UI測試可使用猴子測試
1.圖片太大,有可能不會緩存
2.使用的是系統默認的緩存