发布以后信息查看的路径:

xcode->window->devices and …->查看如图的log。

通常在发布以后,处于安全和性能的考虑,会禁止打印log;但是在关键的信息需要查看的情况下,可以定制一个特殊的打印机制进行保留。

一般我们在APP开发中,喜欢用NSLog输出语句来调节bag,而项目完成之后没有删除或注释,从而影响真机的执行效率,给大家提供一个方法,来解决这个问题:

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用, 大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题, 因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度上影响应用的性能, 针对这种问题可以写一些宏来控制这些调试信息的输出。
 
在release版本禁止输出NSLog内容
 
因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据, 所以发布正式版时需要把这些输出全部屏蔽掉。 我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释, 这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法, 就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。
 
如何实现:
 
在-Prefix.pch(pch全称是“precompiled header”,也就是预编译头文件,
该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,
这样做的目的提高编译器编译速度。我们知道当我们修改一个工程中某个文件代码时候,
编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch中某个文件修改了,
那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间,
所以它里面添加的文件最好是是很少变动或不变动的头文件或者是预编译的代码片段;)
文件中添加
 
  #ifdef DEBUG
  #define NSLog(...) NSLog(__VA_ARGS__)
  #define debugMethod() NSLog(@"%s", __func__)
  #else
  #define NSLog(...)
  #define debugMethod()
  #endif
上段代码的意思就是 用宏指令做一个判断,如果DEBUG为真,则编译#ifdef到#endif宏定义,否则编译器就不编译;
 
这个DEBUG在哪设置呢
 
在 “Target > Build Settings > Preprocessor Macros > Debug” 里有一个”DEBUG=1”。
设置为Debug模式下,Product→Scheme→SchemeEdit Scheme设置Build Configuration成Debug时,
就可以打印nslog了。设置Release,发布app版本的时候就不会打印了,提高了性能

ios发布以后关键信息确认与nslog的更多相关文章

  1. 最新iOS发布App Store详细图文教程~

    网上有很多关于iOS发布上架的教程,但大多比较旧而且不完整.不够清晰.所以整理了一个详细完整的iOS APP发布上架App Store的图文教程.分享给小白到大神路上前进的你我. 上架iOS需要一个苹 ...

  2. iOS发布证书申请

    一.  准备工作1.1.准备打包服务器 打包服务器搭建详见http://bbs.justep.com/thread-67724-1-1.html 或 http://www.cnblogs.com/Wo ...

  3. 【Discuz】云平台服务:出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常

    提示信息 出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常 版本X3.2.20160601 解决方案 Step1.修改云平台开通状态为未开通状态 Step2.访问 ...

  4. 微信 6.5.1 for iOS发布 可以在朋友圈分享相册中的视频

    今天微信 6.5.1 for iOS发布了,最主要的一个功能是可以在朋友圈分享相册中的视频,卖转发朋友圈视频软件的家伙估计要哭了.微信这次更新,更有利于个人号的运营,个人号的价值将更高.先定一个小目标 ...

  5. c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”

    ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

  6. Local模式下Spark程序只输出关键信息

    使用spark-submit提交local任务时,会输出很多Info信息: ------------------------------------------- Time: ms --------- ...

  7. Android安全系列之:如何在native层保存关键信息

    相信大家在日常开发中都要安全层面的需求,最典型的莫过于加密.而apk是脆弱的,反编译拿到你的源码轻而易举,这时候我们就需要更保险的手段来保存密钥之类的关键信息.本文就细致地讲解简单却实用的native ...

  8. 09_传智播客iOS视频教程_自动释放池与NSLog函数

    不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...

  9. iOS 发布应用时屏蔽NSLog

    在开发过程中,经常需要使用NSLog来进行调试,但是NSLog是非常影响性能的,所以我们应该在发布应用时屏蔽掉NSLog,但是如果通过手工的去一行一行的改得话,未免太枯燥与费时了,庆幸的是,我们可以通 ...

随机推荐

  1. (一)Eureka 服务的注册与发现

    (一)服务的注册于发现(eureka); Eureka Server: 服务注册中心,负责服务列表的注册.维护和查询等功能 在Idea里,新建项目,选择Spring initializer. 下面的p ...

  2. 配置NTP集群时间同步(二)

    [root@hadoop1 bin]# rpm -qa|grep ntp 没有的话用yum -y install ntp安装(要记着每台机器上都要安装) [root@hadoop1 bin]# vi ...

  3. App.config配置详解

    经上一篇文章https://www.cnblogs.com/luna-hehe/p/9104701.html发现自己对配置文件很是不了解,同样还是查了半天终于发现另一片宝贵文档https://www. ...

  4. Windbg调试托管代码

    Windbg调试.net托管代码需要借助于SOS.dll,.Net 4.0的32位sos.dll的路径在C:\Windows\Microsoft.NET\Framework\v4.0.30319,64 ...

  5. MyBatis数据持久化(六)resultMap使用

    resultMap是MyBatis最强大也是最重要的特性,使用它我们可以將查询结果或者sql输入条件和一个HashMap的key进行映射,大大简化了sql查询条件的输入,而且使得数据的查询变得非常灵活 ...

  6. 一个PHPer如何深入学习ES搜索引擎?

    公司早在一年前就上ES作为后端搜索服务的项目 ,我们PHPer只是负责实现业务接口,es的一些查询,优化技巧由另一组同事(JAVAer)负责,有时,一个需求过来,改动较大时,需要更改查询json语句, ...

  7. 转:EL表达式

    简介: EL 全名为 Language ,JSP2.0 之后,EL 成为了标准规范.因此,只要是支持Servlet2.4/JSP2.0 的容器,就都可以在JSP 网页中直接使用EL . 除了JSP2. ...

  8. php截取字符串|php截取字符串前几位|php截取中文字符串

    转 截取字符串专题:php截取字符串函数,php 字符串长度,php截取字符串前几位 PHP截取中文字符串(mb_substr)和获取中文 => http://www.q3060.com/lis ...

  9. swift语言点评十二-Subscripts

    Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the m ...

  10. 正则表达式中的/i

    i = insensitive means case-insensitive 表示大小写不敏感