iOS開發(fā)過程中專門在調(diào)試時運行代碼的方法
在開發(fā)過程中,我們經(jīng)常會使用NSLog用于跟蹤調(diào)試,不過在發(fā)布的產(chǎn)品可能并不希望這些調(diào)試代碼被運行。這里有一個小技巧分享一下。
在編寫代碼時可以使用如下方式:
- #ifdef DEBUG
- // Debug 模式的代碼...
- #else
- // Release 模式的代碼...
- #endif
其中的DEBUG是在Xcode默認的工程中已經(jīng)定義好的,也可以根據(jù)自己的實際情況添加其他常量定義。
在Xcode中,選擇導航區(qū)域左側頂端的根節(jié)點,然后選擇Project/Build Settings,在搜索框中輸入DEBUG,可以看到該定義,如下圖所示:
如果要測試在不同模式下代碼的運行效果,可以選擇Product/Scheme/Edit Scheme,修改Build Configuration即可,如下圖所示:
提示:Release模式在真機上無法運行,可以選擇模擬器運行查看效果。
在開發(fā)IAP應用時,可以使用此技巧,這樣就不用每次都想著去修改驗證地址了,示例代碼如下:
定義部分代碼:
- #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請求。
- 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];