原创 UIView的繪製原理 和 異步繪製的實現
UIView 繪製原理 1、當我們調用【UIView setNeedsDisplay】這個方法時,其實並沒有立即進行繪製工作,系統會立即調用CALayer的同名方法,並且在當前layer上打上一個標記,然後會在當前runlo
原创 離屏渲染
離屏渲染是指GPU在當前屏幕緩衝區意外的開闢了一個 緩衝區進行渲染操作 性能損耗原因: 1、創建了新的緩衝區 2、上下文的頻繁切換 產生原因: shouldRasterize 光柵化、遮罩masks、shadows陰影、edgeAntia
原创 iOS 構建緩存時選 NSCache 而非NSDictionary
當系統資源將要耗盡時,NSCache可以自動刪減緩存。如果採用普通的字典,那麼就要自己編寫掛鉤,在系統通知時手動刪減緩存,NSCache會先行刪減 時間最久爲被使用的對象 NSCache 並不會拷貝鍵,而是會保留它。此行爲用NSDicti
原创 iOS 響應者鏈
事件的分發和傳遞 當iOS 程序中發生觸摸事件後,系統會將事件加入到UIApplication管理的一個任務隊列中 UIApplication將處於任務隊列最前端的事件向下分發。即UIWindow UIWindow將事件向下分發,即UIV
原创 TCP 和 UDP
一、TCP 是傳輸控制協議 transport control protocol ,基於字節流傳輸,有連接,可以提供可靠地通信傳輸 TCP充分實現了數據傳輸時的各種控制功能,可以進行丟包的重發,還可以對次序亂掉的分包進行
原创 堆和棧的區別
堆棧控件分配 棧(操作系統):由操作系統自動釋放,存放函數的參數值,局部變量的值。其操作方式類似於數據結構中的棧。 堆(操作系統):一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收,分配方式類似於鏈表 堆棧緩存方式
原创 自定義tabbar
iOS 自定義tabbar具體代碼參考:https://github.com/yuchenArron/TabBar一 、將tabbarviewcontroller 的 tabbar 隱藏 [self.tabBar setHidden:Y
原创 pop 到指定控制器
前提 通過push方式 -推出控制器1、從 A控制器 push 新的控制器,從新的控制器返回 直接返回到 A控制器 的 前一個 或 前幾個控制器(需要對下面代碼略作改動),通過下面方式實現:if (self.navigationContr
原创 一、Audio 介紹
1、音頻在iOS 中的架構和框架 2、音頻編解碼算法、文件封裝格式 3、播放系統聲音、震動、提示聲音 4、AVfoundation精準中英文語言識別 編碼格式:pcm\aac\mp3… Audio 流程圖:
原创 二、Audio 架構
Audio架構圖 從上圖看出,共分爲高中低三層 **高層: AVaudioplayer** audio 基本操作:播放 暫停 停止 循環 時間控制:任意時間位置播放、進度控制 從文件或者緩衝區播放 獲取音視頻關鍵參數 AV
原创 兩臺mac共享文件
1、打開finder ,按住command + K 會彈出: 2、在服務器地址欄,輸入需要連接的mac 的 IP地址。可通過如下方式獲取: 點擊wifi圖標->打開網絡偏好設置-> 3、輸入IP地址後點擊連接: 1)如
原创 iOS socket 編程
socket (套接字)是通信的基石,是支持tcp/ip協議的網絡通信的基本操作單元,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠端主機的IP地址,遠端進程的協議端口。 Socket是對TCP
原创 UIButton title和image 水平居中
UIImage *image = [UIImage imageWithContentsOfFile:imgPath]; [but setImage:image forState:state]; NSString *str
原创 assign 和 weak的區別
assign 和weak都是弱引用類型 用weak聲明的變量在棧中會自動清零,賦值爲nil 用assign 聲明的變量在棧中可能不會自動賦值爲nil,會造成野指針錯誤 在定義一個類的property時候,爲property選擇stro
原创 三、Audio 系統聲音
全能型:AVFoundation 編解碼:AudiotoolBox 底層:AudioUnit 3D: openAL 控制類VC:mediaPlayer Audio systemsound 播放震動效果 播放系統音樂效果 播放提示音效果