在開發過程中,我們經常會使用NSLog用於跟蹤調試,不過在發布的產品可能並不希望這些調試代碼被運行。這里有一個小技巧分享一下。
在編寫代碼時可以使用如下方式:
#ifdef DEBUG // Debug 模式的代碼... #else // Release 模式的代碼... #endif
其中的DEBUG是在Xcode默認的工程中已經定義好的,也可以根據自己的實際情況添加其他常量定義。
在Xcode中,選擇導航區域左側頂端的根節點,然后選擇Project/Build Settings,在搜索框中輸入DEBUG,可以看到該定義,如下圖所示:
如果要測試在不同模式下代碼的運行效果,可以選擇Product/Scheme/Edit Scheme,修改Build Configuration即可,如下圖所示:
提示:Release模式在真機上無法運行,可以選擇模擬器運行查看效果。
在開發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 // 創建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];