首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏猿人谷

    NSLog

    在Objective-C中,NSLog相当于C语言中的printf,常用于文字输出。 1.NSLog定义 NSLog定义在NSObjCRuntime.h中,如下所示: void NSLog(NSString *format, …); 基本上,NSLog很像printf,同样会在console 2.示例 NSLog可以如下面的方法使用: NSLog (@"this is a test"); NSLog (@"string is :%@", string); NSLog (@"x=%d, y=% d", 10, 20); 但是下面的写法是不行的: int i = 12345; NSLog( @"%@", i ); 原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成: int i = 12345; NSLog( @"%d", i ); 3.格式 NSLog的格式如下所示: %@ 对象 %d, %i 整数 %u,%z 无符整形 %f 浮点/双字 %x, %X 二进制整数

    68980发布于 2018-01-17
  • 来自专栏Elton的技术分享博客

    NSLog中使用的格式符

    NSLog在输出的时候,可以使用很多C中的格式符号,与print一样。 u000a```%c\u000a``` 8-bit unsigned character (\u000a```unsigned char\u000a```), printed by \u000a```NSLog digit \u000a```%C\u000a``` 16-bit Unicode character (\u000a```unichar\u000a```), printed by \u000a```NSLog

    50630发布于 2021-01-26
  • 来自专栏清墨_iOS分享

    OSLog与NSLog,OSLog的实践

    一、OSLog与NSLog的区别 NSLog: NSLog的文档,第一句话就说:Logs an error message to the Apple System Log facility. ,所以首先,NSLog就不是设计作为普通的debug log的,而是error log;其次,NSLog也并非是printf的简单封装,而是Apple System Log(ASL)的封装。 NSLog效率低的原因是NSLog做了两件事: 1.-它将日志消息写入Apple System Logging (asl)设施。这允许日志消息显示在Console.app中。 2. { NSLog("nslog---%d", i) } } let endNSLog 跟NSLog的输出方式一致。当然,经过处理之后,性能会比直接使用NSLog要好。 而我们常用的NSLog会将日志写入到控制台.app和Xcode控制台。

    1.9K20编辑于 2022-11-12
  • 来自专栏iOS逆向与安全

    iOS小技能:NSLog调试技巧

    1.2 发布模式关闭NSLog //调试模式 #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #define KisDebug 1 //#define NSLog(fmt, ...) ; #else//发布模式 #define NSLog(...) #define KisDebug 0 #endif II NSLog调试技巧 2.1 Where to find NSLog's output NSLog outputs messages to the ) //A better version of NSLog #define NSLog(format, ...) do { \ fprintf(stderr, "<%s : %d> %s\n", \ [

    1.1K40编辑于 2022-08-22
  • 来自专栏mukekeheart的iOS之旅

    iOS学习——NSLog输出各种类型

    在开发过程中,在调试过程中经常打印不出自己想要的数据格式,还时常报警告,所以整理了一下iOS中用NSLog打印各种数据类型的样式。

    1.5K32发布于 2019-09-29
  • 来自专栏DannyHoo的专栏

    如何使NSLog只在Debug模式下有效

    https://blog.csdn.net/u010105969/article/details/50757136 1#ifndef __OPTIMIZE__    2#define NSLog NSLog(__VA_ARGS__)    3#else    4#define NSLog(...) {}    5#endif  就是上面的这段简单代码就可以让我们的NSLog只在Debug模式即开发过程中有效 ,而当我们的程序处在Release模式下即程序发布中NSLog将无效,这样可以减少用户使用程序的内存开销,同时也免去了我们在开发过程中不断敲下NSLog并不断注释NSLog的繁琐工作。 首先将上面的代码写到头文件中,然后在你要是用NSLog的.m文件中导入头文件即可。 代码原理: 上面 的代码实际是定义了一个宏,这个宏名称恰好也是NSLog,我们在其他文件中使用的NSLog已经不再是原来的NSLog而是定义的宏NSLog,(此NSLog非彼NSLog---)。

    1.1K20发布于 2018-09-13
  • 来自专栏君赏技术博客

    最基本的调试是NSLog及DEBUG预处理器宏

    此文档关于有关NSLog的功能及DEBUG预处理程序宏实际考虑为调试有用的对话 下面是NSLog调用的一个例子。 [TOC] 在哪里可以找到NSLog的输出 有史以来Founction框架的NSLog功能一直适用于iOS和OSX的个个版本。因此,您可以依赖它是可用于在任何苹果的平台,让您的应用程序将运行调试用的。 许多系统框架中使用NSLog的用于记录异常和错误,但不要求来限制及其使用于上述目的这也是完全可以接受的使用NSLog的输出变量值,参数,函数结果,堆栈跟踪等信息,所以你可以看到什么是在你的代码在运行时发生 高级详细信息 出现用于NSLog的函数定义如下: void NSLog(NSString *format, ...); 注意第一个参数是一个格式化字符串,它可以含有意味着额外的参数之后期望特殊的替换标记 NSLog是调试的朋友 每一个iOS或者OSX的开发人员无时无刻的使用NSLog调试你的程序,而且,你知道开发者可能对如何使用它的一些有趣的想法可能对你有帮助。

    1.9K30发布于 2018-09-07
  • 来自专栏月亮与二进制

    Xcode8禁止系统log&真机调试NSLog无输出

    连真机调试的时候NSLog输出的功能也失效了,那还怎么调试! 只能自己改写NSLog的实现宏定义了,利用printf()方法来实现。 这样全局都可用,至于Prefix.pch文件是什么以及怎么创建,可以看我这篇文章:Xcode 6之后创建PCH文件 在Prefix.pch文件中添加以下代码: #ifdef DEBUG // 调试时改变NSLog 方法,输出时间、方法名、行数、输入的内容 #define NSLog(format, ...) printf("\n[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION_ _, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]); #else #define NSLog( #endif 根据代码可以很明显地看出来,定义了如果是DEBUG调试状态,就重新定义NSLog方法,否则还是使用系统原生的实现。

    88220发布于 2021-11-23
  • 来自专栏iOS开发随笔

    如何让NSLog在调试(Debug)的时候输出,发布(Release)的时候不输出?

    更新: 在调试的时候可以把所在的类名、方法名、行数等相关信息也打印出来,更方便调试,更新一下宏定义 问题: 之前一直觉得用在调试的时候用NSLog无所谓,但是接口有很多坑的时候就需要非常多的打印,然后就越来越多的无用信息打印出来 NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__]) #else #define FuLog #endif ---- 使用: 在需要用NSLog()的地方可以用FuLog()替换,这样的话在Debug的模式就可以打印,在Release的模式下就不会打印 如何测试成不成功呢?

    1.9K20发布于 2018-06-28
  • 来自专栏iOS逆向与安全

    iOS项目添加PCH文件、常用预处理指令(移除程序中的identifier、发布模式关闭NSLog

    113755392 pch头文件的内容能够被项目中的其他所有源文件共享和访问,通常我们可在pch文件定义一些全局的宏和导入一些基础类 例如:在pch文件中添加预处理指令,可以在发布应用的时候,一次性将NsLog #import "QCTConsts.h" #import "UIWindow+Extension.h" #pragma clang poison NSLog //移除程序中的指定identifier( 移除程序中的指定identifier(标识符) #pragma clang poison identifier 应用场景:禁止使用ObjC 的运行时API 例子: #pragma clang poison NSLog 4、发布模式关闭NSLog

    2.8K41发布于 2021-03-08
  • 来自专栏攻城狮的动态

    iOS开发中的这些权限,你搞懂了吗?

    : NSLog(@"not Determined"); break; case ALAuthorizationStatusRestricted: NSLog(@"Restricted : NSLog(@"not Determined"); break; case PHAuthorizationStatusRestricted: NSLog(@"Restricted : NSLog(@"not Determined"); break; case AVAuthorizationStatusRestricted: NSLog(@"Restricted : NSLog(@"not Determined"); break; case kCLAuthorizationStatusRestricted: NSLog(@"Restricted : NSLog(@"not Determined"); break; case kCLAuthorizationStatusRestricted: NSLog(@"Restricted

    1.5K50发布于 2018-05-15
  • 来自专栏進无尽的文章

    编码篇 - iOS各种权限状态的获取及注意事项

    : NSLog(@"not Determined"); break; case ALAuthorizationStatusRestricted: NSLog(@"Restricted"); break : NSLog(@"not Determined"); break; case PHAuthorizationStatusRestricted: NSLog(@"Restricted"); break : NSLog(@"not Determined"); break; case kCLAuthorizationStatusRestricted: NSLog(@"Restricted"); break : NSLog(@"not Determined"); break; case kCLAuthorizationStatusRestricted: NSLog(@"Restricted"); break (@"Authorized"); } else{ NSLog(@"Denied or Restricted"); } }];

    5.6K30发布于 2018-09-12
  • 来自专栏Jacklin攻城狮

    iOS开发中的这些权限,你搞懂了吗?

    break; case kCTCellularDataRestrictedStateUnknown: NSLog(@"Unknown"); break; default: (@"Authorized"); break; case ALAuthorizationStatusDenied: NSLog(@"Denied"); break (@"Authorized"); break; case PHAuthorizationStatusDenied: NSLog(@"Denied"); break : NSLog(@"Restricted"); break; default: break; } ! (@"Authorized"); break; case AVAuthorizationStatusDenied: NSLog(@"Denied"); break

    1.6K40发布于 2018-09-12
  • 来自专栏猿人谷

    Objective-C: 字符串NSString与NSMutableString

    isEqualToString,判断两个字符串是否相等: if([str1 isEqualToString: res] == YES) NSLog(@"str1 == res") ; else NSLog(@"str1 ! else NSLog(@"str1 > str2"); uppercaseString,将字符串转换为大写。 (@"str1 == res"); 37 else 38 NSLog(@"str1 ! , book]; 23 NSLog(@"%@" , str); 24 NSLog(@"str的字符个数:%lu" , [str length]); 25

    93360发布于 2018-01-17
  • 来自专栏云原生布道专栏

    【IOS开发基础系列】指纹识别专题

    [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {         NSLog (@"验证成功 刷新主界面");             }else{                 NSLog(@"%@",error.localizedDescription); switch( error.code) { caseLAErrorSystemCancel:                     {                         NSLog(@"系统取消授权, break;                     } caseLAErrorUserCancel:                     {                         NSLog (@"A passcode has not been set"); break;             } default:             {                 NSLog

    39120编辑于 2023-10-16
  • 来自专栏浮躁的喧嚣

    iOS中的NSString与NSMutableString

    (@"str1 = %p",str1); NSLog(@"str2 = %p",str2); NSLog(@"str3 = %p",str3); NSLog(@"str4 = % (@"%d",[str1 isEqualToString:str2]); //比较地址 NSLog(@"%d",str1 == str2); //比较大小,其实是比较的 ascii值 switch ([str1 compare:str2]) { case NSOrderedAscending: NSLog(@"升序"); = [str substringToIndex:5]; NSLog(@"%@",str4);//fgabcd NSLog(@"%@",str);//abcdefgabcd 字符串替换 (@"%@",strM);//aKKKdefgKKK NSLog(@"%lu",(unsigned long)count);//2

    46710编辑于 2023-11-22
  • 来自专栏iOS开发~

    iOS_多线程二:GCD:notify、enter leave、semaphore、barrier、diapatch_apply等的使用

    dispatch_group_async(group, queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(2); NSLog dispatch_group_async(group, queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(4); NSLog (group, dispatch_get_main_queue(), ^{ // 切换到主线程更新UI NSLog(@"都完成后,执行"); }); NSLog(@"是否阻塞主线程"); // 不会 dispatch_async(queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(3); NSLog(@"完成2:%@", dispatch_async(queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(3); NSLog(@"完成2:%@",

    72210编辑于 2022-07-20
  • 来自专栏浮躁的喧嚣

    iOS中的NSArray和NSMutableArray

    ,@"C",@"D",@"E",@"F", nil]; NSArray *array1 = @[@"a",@"b",@"c",@"d"]; //获取数组元素个数 NSLog (@"%lu",(unsigned long)array.count);//6 //获取数组最后一个元素 NSLog(@"%@",[array lastObject]);//F //获取数组第一个元素 NSLog(@"%@",[array firstObject]);//A //获取对象C在数组的位置 NSLog(@"%lu",(unsigned long 遍历 for (int i = 0 ; i< array.count; i++) { NSLog(@"遍历-%@",array[i]); } :^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSLog(@"遍历-%@-%lu",obj,(unsigned

    58810编辑于 2023-11-22
  • 来自专栏iOS开发~

    iOS_多线程一:GCD+混搭测试

    dispatch_async(queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(3); NSLog(@"完成2:%@", ; sleep(1); NSLog(@"完成3:%@", [NSThread currentThread]); }); NSLog(@"是否阻塞主线程"); // 不会 // 执行结果: // dispatch_async(queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(3); NSLog(@"完成2:%@", ; sleep(1); NSLog(@"完成3:%@", [NSThread currentThread]); }); NSLog(@"是否阻塞主线程"); // 不会 // 执行结果: // dispatch_async(queue, ^{ NSLog(@"执行2:%@", [NSThread currentThread]); sleep(3); NSLog(@"完成2:%@",

    74720编辑于 2022-07-20
  • 来自专栏谦谦君子修罗刀

    程序员面试闪充--Block

    void day1(){ NSLog(@"起床"); NSLog(@"上班"); NSLog(@"入职"); NSLog(@"要账号"); NSLog( @"看代码"); NSLog(@"下班"); NSLog(@"睡觉"); } void day2(){ NSLog(@"起床"); NSLog(@"上班"); NSLog(@"需求分析"); NSLog(@"熟悉公司环境"); NSLog(@"下班"); NSLog(@"睡觉"); } void day3 (){ NSLog(@"起床"); NSLog(@"上班"); NSLog(@"写代码"); NSLog(@"开会"); NSLog(@"测试"); NSLog(@"下班"); NSLog(@"睡觉"); } void day4(){ NSLog(@"写代码"); NSLog(@"测试"); } 1)重构的步骤

    75480发布于 2018-05-02
领券