iOS開發(fā)過程中專門在調(diào)試時(shí)運(yùn)行代碼的方法
在開發(fā)過程中,我們經(jīng)常會(huì)使用NSLog用于跟蹤調(diào)試,不過在發(fā)布的產(chǎn)品可能并不希望這些調(diào)試代碼被運(yùn)行。這里有一個(gè)小技巧分享一下。
在編寫代碼時(shí)可以使用如下方式:
- #ifdef DEBUG
- // Debug 模式的代碼...
- #else
- // Release 模式的代碼...
- #endif
其中的DEBUG是在Xcode默認(rèn)的工程中已經(jīng)定義好的,也可以根據(jù)自己的實(shí)際情況添加其他常量定義。
在Xcode中,選擇導(dǎo)航區(qū)域左側(cè)頂端的根節(jié)點(diǎn),然后選擇Project/Build Settings,在搜索框中輸入DEBUG,可以看到該定義,如下圖所示:
如果要測(cè)試在不同模式下代碼的運(yùn)行效果,可以選擇Product/Scheme/Edit Scheme,修改Build Configuration即可,如下圖所示:
提示:Release模式在真機(jī)上無(wú)法運(yùn)行,可以選擇模擬器運(yùn)行查看效果。
在開發(fā)IAP應(yīng)用時(shí),可以使用此技巧,這樣就不用每次都想著去修改驗(yàn)證地址了,示例代碼如下:
定義部分代碼:
- #define ITMS_PROD_VERIFY_RECEIPT_URL @"https://buy.itunes.apple.com/verifyReceipt"
- #define ITMS_SANDBOX_VERIFY_RECEIPT_URL @"https://sandbox.itunes.apple.com/verifyReceipt";
使用部分代碼:
- NSString *encodingStr = [transaction.transactionReceipt base64EncodedString];
- NSString *url;
- #ifdef DEBUG
- url = ITMS_SANDBOX_VERIFY_RECEIPT_URL;
- #else
- url = ITMS_PROD_VERIFY_RECEIPT_URL;
- #endif
- // 創(chuàng)建POST請(qǐng)求。
- NSString *payload = [NSString stringWithFormat:
- @"{\"receipt-data\" : \"%@\", \"password\" : \"%@\"}",
- encodingStr, ITC_CONTENT_PROVIDER_SHARED_SECRET];
- NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
- [request setHTTPMethod:@"POST"];
- [request setHTTPBody:payloadData];
- NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
- [conn start];