在開發過程中,我們經常會使用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];