以下是小編在其他博客中摘取下來覺得平時開發會用得上或者現在已經在用得的調試技巧,列一個匯總。
如有侵權,請告知,刪除
1、【Analyze分析器】
Analyze分析器是一種靜態的工具,可以對我們的程序進行分析,找出我們未使用的變量,或一些死存儲。執行Analyze如下:Product-->Analyze. 如下藍色的標記就是靜態分析的結果。
當然,我們可以設置在編譯程序的時候同時Analyze,把下列選項設為Yes即可。
2、【僵尸對象】
iOS中把那些已經release但還沒完全消失的對象叫做僵尸對象,對已經release的對象再次釋放,就會發生異常。雖然自從使用ARC后,由于對象釋放產生的異常已經大大變少,但偶爾還會出現。開啟僵尸對象模式后,就能快速定位到異常位置。開啟方式如下:Product-->Scheme-->Edit Scheme. 勾選Enable Zombie Objects即可。
3、【NSLog打印】
備注:打印的信息越詳細,定位問題的更迅速。調試的必備品
應該說NSLog打印信息是初學者最喜歡的調試手法,也是最簡單的調試,通過打印出的信息查看程序運行的路徑。但是打印出的信息較少,本身NSLog效率較低,有人使用宏做了部分優化,代碼如下:能夠打印出所在類名、所在方法名、詳細時間、行號。
#import "ViewController.h"
#define NSLog(format, ...) do { \
fprintf(stderr, " %s\n", \
[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], \
__LINE__, __func__); \
(NSLog)((format), ##__VA_ARGS__); \
fprintf(stderr, "-------\n"); \
} while (0)
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
for (int i = 0; i < 5; i++) {
NSLog(@"我的值:%d",i);
}
}
@end
打印結果如下:
4、【init 和 dealloc】
對于ViewController來說,有兩個生命周期函數我們可以進行重寫,也就是init和dealloc方法。對于某些對象的狀態,我們可以在這兩個方法中查看。尤其是在dealloc中可以看到當ViewController退出的時候某個對象是否release。
- (instancetype)init
{
self = [super init];
if (self) {
//初始化語句;
}
return self;
}
- (void)dealloc
{
//釋放后調用;
}
5、【查看代碼運行時間】
備注:這也是優化代碼時常用的技巧。
有時候我們想要準確的知道某段代碼、某個循環執行的時間,然后分析效率等問題,這個時候就需要執行時間是多少。正好看到網上已經有人做了這個工作,我就直接摘下來了。正好也用了宏的方式計算時間,我們只要在需要計算時間的代碼塊前后寫上TICK,TOCK宏即可。當然,原理也是非常的簡單,也就是使用NSDate計算差值。
#import "ViewController.h"
#define TICK NSDate *startTime = [NSDate date]
#define TOCK NSLog(@"Time: %f", -[startTime timeIntervalSinceNow])
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
TICK;
for (int i = 0; i < 5; i++) {
NSLog(@"我的值:%d",i);
}
TOCK;
}
@end
打印結果如下:
6、【手機截屏】
手機截屏也算調試?哈哈。其實也算是開發中的一個小技巧哈。其實大家都會在iPhone上同時按電源鍵+Home鍵截屏,然后使用各種通訊軟件發給其他人,這個略顯不方便。我們來使用Xcode中的方式截屏。當手機接上電腦后,注意要把調試設備選為自己的手機:
然后選擇Debug-->View Debugging-->Take Screenshot... .然后可以看到手機屏幕已經在你的電腦桌面了。是不是比直接在手機上操作方便多了呢?這樣就可以快速的發給其他開發者、PM等人了。
7、【視圖調試】
備注:跳槽后總會接觸一些別人已經開發的項目上做二次開發,甚至三次、四次開發,對于一些復雜的界面使用下面的方法就能迅速的了解界面UI的構成,幫助你閱讀代碼。視圖調試還有另外一個神奇:Reveal。這里就不做過多的介紹,感興趣的朋友可以百度
如今iOS開發的UI設計有很多種方式,比如storyboard,xib,代碼實現。對于stoayboard,xib可視化實現是比較簡單的,但是對于一些“iOS老程序員”而言,都喜歡使用代碼實現UI,并且可能UI層次還比較復雜。這樣就給我們新接手項目的開發者帶來很多困擾。如何快速查看一個復雜UI的界面層次和布局,最快的方法就是用到視圖調試。
當項目運行到某一個界面(可以是模擬器或真機)時,開啟視圖調試,點擊按鈕如圖:
這樣就會進入試圖調試,你可以很方便的查看這個界面。這里可以看到控件之間的層次關系。
左側的樹形層次圖可以在查看線程、隊列和UI之間切換: