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

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. Ubuntu新建用户并加入SUDO组

    Ubuntu新建用户并加入SUDO组 新建用户: adduser xxxx 加入用户组: usermod -aG sudo username

  2. BZOJ 2127 二元关系

    题意: 思路: 先把所有的值加起来 最小割割哪儿 就代表那个地方不选 一减 剩下的就是 最大值了 //By SiriusRen #include <cstdio> #include < ...

  3. C++线程安全退出

    HANDLE m_EvtThreadExit[MaxVisionNum]; //定义 方法一 ;i<MaxVisionNum;i++) m_EvtThreadExit[index] = Crea ...

  4. Android开发中,9-patch (九宫格)图片作为背景带来的问题

    9-patch 为了解决不同分屏下的图片适应性,对图片做了padding,而在android中,要给一个控件设置背景图,最终是要调用 setBackgroundDrawable  方法来设置图片资源, ...

  5. 路飞学城Python-Day9(practise)

    def save(): with open('practise_4', 'w+', encoding='utf-8') as f: for i in user_list: info = str(i) ...

  6. nessus 漏洞扫描安装和使用

    介绍 Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件.总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件.  软件特色 * 提供完整的电脑漏洞扫描服务, 并随时更 ...

  7. sz xshell

    yum install lrzsz -y

  8. vue项目打包后想发布在apache www/vue 目录下

    使用的是vue-element-admin做示例,可以参考Vue项目根据不同运行环境打包项目,其他项目应该大同小异. 使用vue-router的browserHistory模式,配置mode: 'hi ...

  9. logstash-shipper.conf

    input { file { path => '/data/rsyslog/*/*/*.log' start_position => 'beginning' sincedb_path =& ...

  10. python list set dict的简单应用示例

    list.count(x):返回指定元素x在列表中出现的次数 set(list):将list类型变量转换为set类型,去除重复值 dick:保存键值对 x=[1,2,2,3,3] s1=set(x) ...