iOS开发过程中专门在调试时运行代码的方法

长平狐 发布于 2013/12/26 11:22
阅读 309
收藏 0

开源软件供应链点亮计划,等你来!>>>

在开发过程中,我们经常会使用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];

 

 


原文链接: http://www.cnblogs.com/liufan9/archive/2013/04/02/2995500.html
加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部