需求: 假設已經有了一些類,現在想統計每個方法調用花了多長時間,該怎么做? 思路: 我第一個想法就是去每個方法執行前后記錄一下當前的時間戳,然后相減統計到日志。 OK,沒問題,那么這樣做合理嗎? 首先,工作量大且全部都是重復勞動; 其次,擴招性極其差; 再次,不優雅,寫代碼 ...
最近在看Object C運行時特性,其中有一個特別好用的特性叫 Method Swizzling,可以動態交換函數地址,在應用程序加載的時候,通過運行時特性互換兩個函數的地址,不改變原有代碼而改變原有行為,達到偷天換日的效果,下面直接看效果吧 我們先創建一個Calculator類,並提供兩個簡單的方法 接下來我們在ViewController測試一下 兩個函數執行后,輸出結果如下 現在我們有一個需 ...
2015-07-31 22:56 1 1677 推薦指數:
需求: 假設已經有了一些類,現在想統計每個方法調用花了多長時間,該怎么做? 思路: 我第一個想法就是去每個方法執行前后記錄一下當前的時間戳,然后相減統計到日志。 OK,沒問題,那么這樣做合理嗎? 首先,工作量大且全部都是重復勞動; 其次,擴招性極其差; 再次,不優雅,寫代碼 ...
在計算cell的實際高度是 我們一般是通過計算frame 拿到最底部一個控件的最大Y值從而的到cell 的高度 算來算去 比較麻煩 其實,iOS8已經提供了直接通過Cell高度自適應的方法了,根本不用計算Cell高度,就可以搞定不等高Cell 這個方法即對系統cell有效 也對通 ...
NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、是我們的在iOS開發中非常常用的類。當然,在享受這些類的便利的同時,它們也給我們帶來一些困擾。粗心我們可能會調用addObject:傳入一個nil, 也有可能是 ...
runtime簡介 因為Objc是一門動態語言,所以它總是想辦法把一些決定工作從編譯連接推遲到運行時。也就是說只有編譯器是不夠的,還需要一個運行時系統 (runtime system) 來執行編譯后的代碼。這就是 Objective-C Runtime 系統存在的意義,它是整個Objc運行框架 ...
runtime簡介 因為Objc是一門動態語言,所以它總是想辦法把一些決定工作從編譯連接推遲到運行時。也就是說只有編譯器是不夠的,還需要一個運行時系統 (runtime system) 來執行編譯后的代碼。這就是 Objective-C Runtime 系統存在的意義,它是整個Objc運行框架 ...
一、卡頓問題的幾種原因 復雜 UI 、圖文混排的繪制量過大; 在主線程上做網絡同步請求; 在主線程做大量的 IO 操作; 運算量過大,CPU 持續高占用; 死鎖和主子線程搶鎖。 二、監測卡頓的思路 監測FPS:FPS 是一秒顯示的幀數,也就是一秒內畫面變化數量 ...
本文要寫的是開源庫YYKit其中一個組件YYModel,這個組件的用途就是提供JSON/Dictionary<==>Model這間相互的自動轉換。對於它支持些個功能、性能如何、及它是如 ...