文档章节

优化的NSLog技巧

mahb520
 mahb520
发布于 2014/04/22 13:29
字数 321
阅读 34
收藏 0
点赞 0
评论 0

使用NSLog的一个风险是:它的运行会占用时间和设备资源。

简单而粗暴的解决方案是:在release前,将所有的NSLog注释掉。简单有效,但副作用是:下次你要调试时,又得将NSLog一个个取消注释。


以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能。


解决步骤:

  1. 修改<AppName>-Prefix.pch ,增加以下的宏代码

    [cpp] view plaincopy

    1. #ifdef DEBUG  

    2. # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);  

    3. #else  

    4. # define DLog(...);  

    5. #endif  

  2. 在程序中使用DLog来替换原来的NSLog

    [cpp] view plaincopy


    1. DLog(@"当前程序目录是:%@", [self applicationDocumentsDirectory ]);  

  3. 修改项目的配置,使得在debug编译的时候,编译DLog的宏,产生详细的日志信息,而release的时候,不产生任何控制台输出
    在Other Linker Flags 中,在debug的时候,加入编译属性 -DEBUG

  4. 这样控制台会显示这样的日志信息

    [cpp] view plaincopy

    1. 2011-12-27 22:23:53.303 IManager[5449:b603] [文件名:/Users/roamer/Project/ÂõΩÊ≥∞ÂêõÂÆâ/Ëꕉ∏öÈÉ®ÁÆ°ÁêÜiphone/IManager/IManager/AppDelegate.m]  

    2. [函数名:-[AppDelegate application:didFinishLaunchingWithOptions:]]  

    3. [行号:37]   

    4. 当前程序目录是:/Users/roamer/Library/Application Support/iPhone Simulator/4.3.2/Applications/6B0E7B08-5528-468A-B728-0C4580805368/Documents  


本文转载自:http://blog.csdn.net/iosdevelopers/article/details/24271293

共有 人打赏支持
mahb520
粉丝 21
博文 73
码字总数 24908
作品 0
广州
项目经理
iOS NSLog调试技巧

xcode测试分为两种;一种是Debug,一种是Release.Debug是调试版本,包括的程序信息更多,运行速度慢;Release不包含任何调试信息,所以体积小,运行快. 因此,我们需要在这两种模式中切换,来确保N...

刘学良
2016/12/17
14
0
iOS开发Debug和Release的理解

<一> 参考: http://blog.csdn.net/mad1989/article/details/40658033 1,Debug和Release版本区别? 众所周知,我们进行iOS开发,在Xcode调试程序时,分为两种方式,Debug和Release,在Targe...

水一样的人儿
2016/07/20
71
0
位移枚举解析

位移枚举 位移枚举是非常古老的 C 语言技巧 如果都是 1 结果就是1 如果都是 0 结果就是0 演练 定义枚举类型 /// 操作类型枚举typedef enum { ActionTypeTop = 1 << 0, ActionTypeBottom = 1...

就不穿小内
2015/12/11
106
0
iOS调试技巧总结

调试技巧总结   1.断点   1.1 普通断点   1.2 全局断点(Global BreakPoint)   1.3 条件断点(Condational Breakpoints) 2. 打印的艺术   2.1 NSLog   2.2 开启僵尸对象(Enable N...

AngusTing
2016/04/09
69
0
scrollView循环播放器(一)

/ 设置scrollView / - (void)setUpScrollView:(NSArray )array { UIScrollView scrollView = [[UIScrollView alloc]initWithFrame:self.bounds]; scrollView.delegate = self; scrollView.pa......

我爱觉觉
2015/11/03
0
0
GCD使用经验与技巧浅谈

前言 GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。 dispatchoncet必须是全局或static变量 这一条算是“老生常谈”了,但我认...

Snaiper
2015/10/21
61
0
我的女神——简洁实用的iOS代码调试框架

我的女神——简洁实用的iOS代码调试框架 一、引言 这篇博客的起源是接手了公司的一个已经完成的项目,来做代码优化,项目工程很大,并且引入了很多公司内部的SDK,要搞清楚公司内部的这套框架...

珲少
2015/09/10
585
2
iPhone文件系统NSFileManager讲解

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。 iPhone文件系统:创建、重命名以及删除文件,NSFil...

长平狐
2013/03/19
92
0
iOS开发中的sqlite数据库

1.iOS开发中的数据一般指sqlite,而如果连接服务器,那就另说,那就不是iOS开发直接操作其它数据库,譬如SqlSever,Mysql,Orical。要使用数据库sqlite,首先将libsqlite3.0.dylib加到项目中。...

今日竹石
2014/02/18
0
1
iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEASE模式)

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有...

召唤攻城狮
2014/07/31
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

rabbitmq学习记录(六)交换机Exchange-direct

实现功能:一条消息发送给多个消费者 交换机模式:direct 相比于之前的fanout模式,可以进一步的筛选获取消息的消费者。 fanout模式下,只要消费者监听的队列,已经与接收生产者消息的交换机...

人觉非常君
15分钟前
0
0
Java 之 枚举

Java 中声明的枚举类,均是 java.lang.Enum 类的子类,Enun 类中的常用方法有: name() 返回枚举对象名称 ordinal() 返回枚举对象下标 valueOf(Class enumType, String name) 转换枚举对象 ...

绝世武神
23分钟前
0
0
使用爬虫实现代理IP池之放弃篇

啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的),白话说就是能联网并提供代理访问互联网的服务器,它提供的...

一别丶经年
39分钟前
0
0
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 Sqoop Hive HBase 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用复杂SQL 调整Hive数据类型 不断更新 ...

hblt-j
今天
0
0
Dart 服务端开发 文件上传

clent端使用angular组件 upload_component.html form id="myForm" method="POST" enctype="multipart/form-data"> <input type="file" name="fileData"> <!-- file field --></form>......

scooplol
今天
0
0
apache和tomcat同时开启,乱码问题

tomcat和apache同时开启,会走apache的转发,执行的是AJP/1.3协议。所以在tomcat的配置文件server中, <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForU......

Kefy
今天
0
0
使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 和ssh常用命令

ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利 第一步...

xtof
今天
0
0
orcale 查询表结构

SELECT t.table_name, t.colUMN_NAME, t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', t1.COMMENTS FROM User_Tab_Cols t, User_Col_Comments t1WHERE t.table_name......

wertwang
今天
0
0
华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
今天
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部