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

移动开发 iOS
iOS开发没有想象的那么复杂。iOS提供了丰富的UIKit控件来供我们使用,大部分的工作都已经帮我们处理了。而且为了不失可控制性,每个控件都公开了可以让用户自定义的接口。我们可以通过实现这些接口来做自定义的处理,也不失灵活性。 至于调试,iOS的调试是不太方便,不过只要能合理的利用好工具,应该不是大问题。

在开发过程中,我们经常会使用NSLog用于跟踪调试,不过在发布的产品可能并不希望这些调试代码被运行。这里有一个小技巧分享一下。

在编写代码时可以使用如下方式:

  1. #ifdef DEBUG 
  2.     // Debug 模式的代码... 
  3. #else 
  4.     // Release 模式的代码... 
  5. #endif 

其中的DEBUG是在Xcode默认的工程中已经定义好的,也可以根据自己的实际情况添加其他常量定义。

在Xcode中,选择导航区域左侧顶端的根节点,然后选择Project/Build Settings,在搜索框中输入DEBUG,可以看到该定义,如下图所示:

如果要测试在不同模式下代码的运行效果,可以选择Product/Scheme/Edit Scheme,修改Build Configuration即可,如下图所示:

提示:Release模式在真机上无法运行,可以选择模拟器运行查看效果。

在开发IAP应用时,可以使用此技巧,这样就不用每次都想着去修改验证地址了,示例代码如下:

定义部分代码:

  1. #define ITMS_PROD_VERIFY_RECEIPT_URL        @"https://buy.itunes.apple.com/verifyReceipt" 
  2. #define ITMS_SANDBOX_VERIFY_RECEIPT_URL     @"https://sandbox.itunes.apple.com/verifyReceipt"; 

使用部分代码:

  1. NSString *encodingStr = [transaction.transactionReceipt base64EncodedString]; 
  2.     NSString *url; 
  3. #ifdef DEBUG 
  4.     url = ITMS_SANDBOX_VERIFY_RECEIPT_URL; 
  5. #else 
  6.     url = ITMS_PROD_VERIFY_RECEIPT_URL; 
  7. #endif 
  8. // 创建POST请求。 
  9.     NSString *payload = [NSString stringWithFormat: 
  10.                          @"{\"receipt-data\" : \"%@\", \"password\" : \"%@\"}"
  11.                          encodingStr, ITC_CONTENT_PROVIDER_SHARED_SECRET]; 
  12.     NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding]; 
  13.     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; 
  14.     [request setHTTPMethod:@"POST"]; 
  15.     [request setHTTPBody:payloadData]; 
  16.     NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 
  17.     [conn start]; 

 

责任编辑:闫佳明 来源: cnblogs
相关推荐

2010-03-04 09:54:24

Android开发

2015-07-09 10:36:40

iOS

2010-07-05 12:09:10

RationalJazz需求管理

2016-12-30 11:10:32

Hadoop开发JVM

2024-10-29 09:20:01

2011-07-06 16:00:28

ASP

2009-06-17 16:10:37

Java网站优势

2021-04-23 09:00:00

开发安全编码

2015-09-25 10:02:52

BlocksDelegates开发

2009-11-23 20:39:21

ibmdw敏捷开发

2011-03-25 14:27:40

数据库开发程序员

2009-06-10 15:36:25

ubuntu netb开发过程

2015-09-10 09:55:36

移动web开发问题

2011-01-26 09:40:42

.NET开发

2010-06-18 10:21:01

UML建模

2009-06-17 14:33:08

java项目开发

2015-07-15 12:29:34

技术周刊

2020-10-23 10:31:59

开发开源工具开源

2012-11-13 11:27:16

详细设计

2009-03-11 11:39:54

CSSJavascriptSEO
点赞
收藏

51CTO技术栈公众号