玖叶教程网

前端编程开发入门

出包的时候为什么需要移除代码中Log输出?

原因:

输出的日志信息在app运行(机审)的时候是可见的,可以作为比对的一个方面


下面验证这个问题:
新建一个Xcode工程,命名为logDemo
在ViewController.m类viewDidLoad方法增加一条OC的输出


- (void)viewDidLoad {
    NSLog(@"log测试信息");
    [super viewDidLoad];
// Do any additional setup after loading the view.
}


1.运行

查看Xcode Log输出


2.在iOS设备上直接运行app

对,就是点一下那个demo的图标


3.打开Mac系统 控制台App

长这样,Mac系统自带好多宝贝


4.选中左上角连接到mac的iOS设备, 查看设备



运行安装在设备上app之后,控制台App输出的log中包含了在代码中输出的log信息!


这时候老司机们可能就想到了--------

自定义NSLog方法,设置debug模式才打印log


例如这样:

#ifdef DEBUG
    #define NSLog(...) NSLog(__VA_ARGS__)
    #define debugMethod() NSLog(@"%s", __func__)
#else
    #define NSLog(...)
    #define debugMethod()
#endif


燃鹅:

既然开发者能关闭开关,我是相信苹果有能力打开它的.


那么,移除log打印才是最彻底的办法!


需要注意的是,需要移除的log不仅限于OC的NSLog输出 (这不是自欺欺人吗)

工程中用到的swift、lua、C++、C#等所有语言的log输出都是需要注意的.


为此(鉴于手动注释的时候,太枯燥、恶心...),我在工具中增加了移除NSLog的功能,目前仅限于移除NSLog相关的log.它本来就是个混淆OC的工具,让它去移除其他语言的log,我感觉你在为难它(还不是因为懒吗)


提前祝长假快乐

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言