Xcode學習筆記中關於如何定義宏問題解決


Xcode學習筆記中關於如何定義問題解決是本要介紹的內容,主要是來學xcode的學習,具體來看詳細講解。的使用可以節省代碼重復輸入工作,還可以為調試帶來各種好處。本文列出了幾個非常簡單實用的

這些是我在Xcode中常用到的宏:

CMLog: 用它來代替NSLog:

#define CMLog(format, ...) NSLog(@"%s:%@", __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]);  

它的作用是將調用它的類和方法的名稱一起輸出到控制台。比如你在MyAppDelegate類的applicationDidFinishLaunching方法中調用它:

CMLog(@"My iPhone is an %@, v %@", [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion]);  

控制台將輸出:

2009-01-05 10:06:28.957 MyApp15173:20b]   
-[MyAppDelegate applicationDidFinishLaunching:]:
My iPhone is an iPhone Simulator, v 2.2

MARK: 此宏用於輸出調用它的類和方法名稱。適用於只想知道是否一個方法被調用了。

#define MARK    CMLog(@"%s", __PRETTY_FUNCTION__);  

START_TIMER和END_TIMER: 用於確定一個方法或一段代碼的運行時間:

 #define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];    
#define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate];
CMLog([NSString stringWithFormat:@"%@ Time = %f";, msg, stop-start]);

將START_TIMER 置於需評測的代碼段開始處,並將END_TIMER置於代碼段結束處,你就可獲得這段代碼的運行時間:

 - (NSData *)loadDataFromURL:(NSString *)dataURL    
{
START_TIMER;
NSData *data = [self doSomeStuff:dataURL];
END_TIMER(@"loadDataFromURL");
return data;
}

輸出為:

2009-01-05 10:31:37.943 MyApp[15283:20b] -[MyAppDelegate loadDataFromURL:]:  
loadDataFromURL Time = 3.636021

將所有這些宏定義整理使用條件標志放在預編譯的頭文件中。調試時,此標志設為1 ,發布時將其設為0 。

#if DEBUG==1    
#define CMLog(format, ...) NSLog(@"%s:%@";, __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]);
#define MARK CMLog(@"%s";, __PRETTY_FUNCTION__);
#define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];
#define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate];
CMLog([NSString stringWithFormat:@"%@ Time = %f";, msg, stop-start]);
else
#define CMLog(format, ...)
#define MARK #define START_TIMER
#define END_TIMER(msg)
endif



在Debug目標設定中加入:

OTHER_CFLAGS = -DDEBUG=1    

在Release 目標設定中加入:

OTHER_CFLAGS = -DDEBUG=0 

小結:Xcode學習筆記中關於如何定義問題解決的內容介紹完了,希望通過本文的學習能對你有所幫助!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM