NSLog使用小记

IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog输出方式 主要介绍了IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog输出方式的相关资料,需要的朋友可以参考下 立即下载

在程序开发中,我们需要经常需要实时输出一些运行数据来判断程序是否正确的运行,在IOS开发中,NSLog很像printf和println,会在控制台里面格式化的输出结果。使用NSLog输出,对应不同的对象需要用不同的格式化字符,NSLog的格式如下所示:

  1. %@        对象    
  2. %d, %i   整数    
  3. %u         无符整形    
  4. %f           浮点/双字    
  5. %x, %X  二进制整数    
  6. %o         八进制整数    
  7. %zu       size_t    
  8. %p        指针    
  9. %e        浮点/双字 (科学计算)
  10. %g        浮点/双字    
  11. %s        C字符串    
  12. %.*s     Pascal字符串    
  13. %c       字符    
  14. %C      unichar    
  15. %lld     64位长整数(long long)    
  16. %llu     无符64位长整数    
  17. %Lf      64位双字  

在release版本禁止输出NSLog内容

因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。

我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。

  1. #ifndef __OPTIMIZE__   
  2. #define NSLog(...) NSLog(__VA_ARGS__)   
  3. #else   
  4. #define NSLog(...) {}   
  5. #endif  

如我项目里的prefix.pch文件:

  1. #ifndef __IPHONE_4_0   
  2. #warning "This project uses features only available in iOS SDK 4.0 and later."   
  3. #endif   
  4.   
  5. #ifdef __OBJC__   
  6.     #import <UIKit/UIKit.h>   
  7.     #import <Foundation/Foundation.h>   
  8.     #import "AppDelegate.h"   
  9.     #import "UIViewController+Customized.h"   
  10. #endif   
  11.   
  12. #ifndef __OPTIMIZE__   
  13. #define NSLog(...) NSLog(__VA_ARGS__)   
  14. #else   
  15. #define NSLog(...) {}   
  16. #endif  

 

用Gazebo仿真无人机视觉SLAM:ORB-SLAM2+RGB-D相机完整调试记录 本文详细介绍了在Gazebo仿真环境中优化ORB-SLAM2用于无人机视觉SLAM的完整调试过程。通过定制传感器配置、调整ORB-SLAM2参数以及优化点云处理策略,显著提升了无人机在仿真环境中的SLAM性能。文章还提供了实用的调试技巧和性能评估方法,帮助开发者高效实现无人机视觉SLAM系统的仿真测试。 阅读详情

相关推荐

OpenClaw 完整命令文档(2026.3.13 最新版)

本文档为OpenClaw 2026.3.13通用版使用指南,包含核心命令大全。主要内容包括:1)基础安装/升级/卸载命令;2)ClawHub扩展安装命令(支持飞书/钉钉/企微等平台连接);3)Skills技能安装命令(实现聊天/搜索/记忆等功能);4)飞书机器人授权与配对命令;5)启动运行与配置检查命令;6)工作区与记忆管理命令;7)插件安全设置命令;8)调试日志命令;9)飞书机器人一键部署简化流程。文档特别强调飞书机器人部署需feishu扩展+对应技能+用户授权的完整配置,所有命令均需在终端执行,安装后需

MKliudan的专栏 1294

C/C++预处理指令#define,#ifdef,#ifndef,#endif…

C/C++常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#els...

yubingdian2011的专栏 391

手把手教你用STM32CubeIDE移植Vector CCP驱动,实现与INCA的标定通信(附避坑指南)

本文详细介绍了如何在STM32CubeIDE环境下移植Vector CCP驱动,实现与INCA的标定通信。从开发环境准备、CAN外设配置到CCP协议栈移植和A2L文件生成,提供了完整的操作流程和常见问题解决方案,帮助工程师快速掌握基于CAN总线的标定技术。

weixin_28685287的博客 138

NSlog在release模式下屏蔽log信息

在我们的 项目中nslog是最长用到的

草帽的专栏 755

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3404

手把手教你学Simulink——基于经典PID控制的电机系统场景实例:步进电机PID位置控制系统的实现

步进电机(Stepper Motor)是一种将电脉冲信号转化为角位移的执行元件,具有结构简单、控制方便、定位精度高等优点,广泛应用于数控机床、机器人、打印机、3D打印机等需要精确定位的场合。传统的步进电机多采用开环控制,但在高速或负载变化较大的情况下容易出现丢步、振荡等问题。为提高控制精度与响应性能,闭环PID控制被引入步进电机的位置控制中,通过编码器或旋转变压器等反馈装置,实现高精度、高稳定性的位置控制。本教程将带你使用构建一个基于PID控制的步进电机位置控制系统仿真模型步进电机建模。

MHD0815的博客 9693

在release版本禁止输出NSLog内容

在release版本禁止输出NSLog内容

u011326424的博客 2272

低功耗设计:rush current

在power gating的设计中引入了一个rush current的概念,它的产生原因是switch cell上电过程相当于电容充电过程,会产生一个短期的大电流,称之为rush current。 1.rush current的危害 1)造成巨大的ir drop 2)导致功能错误 3)一些极端例子中,rush current会引发VDD短期崩溃,造成存储在retention register与mem中的数据失效 4)大电流会还对周围always on模块造成干扰,产生大的压降 2.控制rus

m0_61544122的博客 3071

NSLog使用,在release版本禁止输出NSLog内容

在程序开发中,我们需要经常需要实时输出一些运行数据来判断程序是否正确的运行,在IOS开发中,NSLog很像printf和println,会在控制台里面格式化的输出结果。使用NSLog输出,对应不同的对象需要用不同的格式化字符,NSLog的格式如下所示: 1. %@        对象     2. %d, %i   整数     3. %u         无符整形     4. %f

欢迎关注我的微信公众号:Vichuzhu 1681

串口通信的性能瓶颈分析:如何提高数据吞吐量和降低延迟

摘要: 串口通信在高频或大数据场景下存在吞吐量不足、延迟高、丢帧等问题,主要瓶颈包括波特率限制、缓冲区不足、CPU轮询延迟等。优化策略包括:提升波特率至硬件上限、增大缓冲区、采用异步I/O(如ReadAsync)减少线程切换,使用二进制协议降低解析开销。实时性方面需启用硬件流控、批量发送数据,并优化线程优先级。跨平台适配需区分Windows/Linux的缓冲区设置与异步机制。性能测试可通过吞吐量、延迟及回环测试验证优化效果,核心原则是硬件匹配、异步处理、协议优化与跨平台适配。(150字)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 984

Pre-suite 开发之MFi功能搭建

Pre-suite 固件中只有带无线硬件的Ezairo 7160sl才具备无线通信能力,其无线功能包括标准BLE 5.2 低功耗蓝牙功能以及非标准的低功耗无线音频流功能。Ezairo 7160sl 支持3种低功耗无线音频流协议:来自APPLE的MFi,来自Google的ASHA以及来自onsemi的remote mic。其中MFi音频流走的G.722编码的Mode1,速率为64kbps;而非MFi音频流走的G.722的Mode3,速率为48kbps.

SnowYang2017的博客 1503

捕获NSLog日志小记

既往不恋,纵情向前 原文链接 一、NSLog概述 1、NSLog是什么 NSLog是一个C函数,函数声明如下: //Logs an error message to the Apple System Log facility. FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2) NS_NO_TA...

weixin_34240657的博客 922

【基于Arduino 的CNC笔式绘图仪】

该机器的结构基于我之前视频中的DIY CNC激光雕刻机,目标是以尽可能少的零件制造最简单的CNC机器。它使用 3 个 NEMA 17 步进电机进行 X、Y 和 Z 轴运动,并使用一个小伺服器进行夹持器。这款数控笔式绘图仪的大脑是一块Arduino UNO板,结合了一个数控屏蔽和三个A4988步进驱动器。在我看来,相当大的工作区域,360x280mm,以及这款笔式绘图仪可以输出的细节水平也令人印象深刻。我真的很惊讶这些图纸的好坏和精确程度,尤其是我使用0.6毫米中性笔的图纸。

vor234的博客 1499

ios nslog 例子_iOS 小记

提示:由于水平有限,如发现有疑问或错误的地方请毫不客气的提出、讨论,我会在第一时间回复,感谢在先0.注意APi可使用范围重要的事情说三遍 注意API 可使用范围重要的事情说三遍 注意API 可使用范围1.块的反向使用已知 :aVC,aVC.searchBar ; bVC,bVC.blockaVC addChildVC:bVCsearchBar代理方法:searchBarBeginSearch{ b...

weixin_31599065的博客 199

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NSRegularExpression 使用小记

一些NSRegularExpression方法的使用 //block方式遍历出合适的结果 - (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (NS_NOESCAPE ^)(NSTextCheck

木木不 2843

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

小记近日调试代码的两件怪事

============================================================博文原创,转载请声明出处电子咖啡-专注于移动互联网============================================================记录今天开发的两件怪事:1、代码如下,连续三行logo,但是只打印了log1和log2,跨过了log2.很奇怪

Eric's Blog 1848

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

debug小记

    编程难免有bug,一些隐蔽的bug往往让人比较烦恼,初学者更是如此,俺经过亲身经历,整理了一些debug的小技巧,希望对初学者有所帮助,高手拍砖也欢迎哈   1.最常用的肯定是NSLog了,可以查看各种变量在各个状态的值,而且对于程序流程的整理也很有帮助   2.单步调试,一般鼠标悬浮在变量上就可以快速查看变量的状态,俺一般看这个变量的地址,就是0x开头的,主要是看它是否为nil...

hua397的专栏 178

OC-AVAudioPlayer的使用小记

- (void)viewDidLoad { [super viewDidLoad]; //设置音乐的后台播放,注意background mode中需要勾选上 AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessi...

lyz0925的博客 568

base64的使用方法小记

 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,格式为ASCII码,Base64编码可用于在HTTP环境下传递较长的标识信息。采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到   ios中使用BASE64进行加密和解密的方法可以直接用GTMBase64.h来实现 用到的三个文件  GTMDefines.h GTMBase6...

泡泡堂 989

NSPredicate使用小记

大家在平常的开发过程中多多少少都会接触到数据筛选,那势必会用到NSPredicate 它的使用主要集中在两个方法中 NSArray- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;NSMutableArray- (void)filterUsingPredicate:(NSPredicate *)predicate;

Salvador 812

block语法小记

// block语法(可定义在任意位置) //1.定义 int (^Sum)(int, int) = ^(int a, int b){return a+b;}; //2.使用 NSLog(@"sum = %d", Sum(10, 20)); //3.将block定义成类

1 431

NSTimer使用小记

目录 1. NSRunLoopCommonModes和Timer2. NSThread和Timer3. GCD中的Timer   返回目录 1. NSRunLoopCommonModes和Timer     当使用NSTimer的scheduledTimerWithTimeInterval方法时。事实上此时Timer会被加入到当前线程的Run Loop中,且模式是默认

Wally1985的专栏 600
上一篇: iOS开发:推送通知简述及开发实践
下一篇: iOS开发:安装真机调试证书
trandy
博客等级 码龄17年 79粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值