Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 515|回复: 0

Xcode学习笔记中关于如何定义宏问题解决

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-7-18 04:36:09 | 显示全部楼层 |阅读模式

    Xcode学习笔记中关于如何定义问题解决是本要介绍的内容,主要是来学xcode的学习,具体来看详细讲解。的使用可以节省代码重复输入工作,还可以为调试带来各种好处。本文列出了几个非常简单实用的

    这些是我在Xcode中常用到的宏:

    CMLog: 用它来代替NSLog:

    #define CMLog(format, ...) NSLog(@"%s:%@", __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]);  

    它的作用是将调用它的类和方法的名称一起输出到控制台。比如你在MyAppDelegate类的applicationDidFinishLaunching方法中调用它:

    CMLog(@"My iPhone is an %@, v %@", [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion]);  

    控制台将输出:

    2009-01-05 10:06:28.957 MyApp15173:20b]   
    -[MyAppDelegate applicationDidFinishLaunching:]:
    My iPhone is an iPhone Simulator, v 2.2

    MARK: 此宏用于输出调用它的类和方法名称。适用于只想知道是否一个方法被调用了。

    #define MARK    CMLog(@"%s", __PRETTY_FUNCTION__);  

    START_TIMER和END_TIMER: 用于确定一个方法或一段代码的运行时间:

     #define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];    
    #define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate];
    CMLog([NSString stringWithFormat:@"%@ Time = %f";, msg, stop-start]);

    将START_TIMER 置于需评测的代码段开始处,并将END_TIMER置于代码段结束处,你就可获得这段代码的运行时间:

     - (NSData *)loadDataFromURL:(NSString *)dataURL    
    {
    START_TIMER;
    NSData *data = [self doSomeStuff:dataURL];
    END_TIMER(@"loadDataFromURL");
    return data;
    }

    输出为:

    2009-01-05 10:31:37.943 MyApp[15283:20b] -[MyAppDelegate loadDataFromURL:]:  
    loadDataFromURL Time = 3.636021

    将所有这些宏定义整理使用条件标志放在预编译的头文件中。调试时,此标志设为1 ,发布时将其设为0 。

    #if DEBUG==1    
    #define CMLog(format, ...) NSLog(@"%s:%@";, __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]);
    #define MARK CMLog(@"%s";, __PRETTY_FUNCTION__);
    #define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];
    #define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate];
    CMLog([NSString stringWithFormat:@"%@ Time = %f";, msg, stop-start]);
    else
    #define CMLog(format, ...)
    #define MARK #define START_TIMER
    #define END_TIMER(msg)
    endif



    在Debug目标设定中加入:

    OTHER_CFLAGS = -DDEBUG=1    

    在Release 目标设定中加入:

    OTHER_CFLAGS = -DDEBUG=0 

    小结:Xcode学习笔记中关于如何定义问题解决的内容介绍完了,希望通过本文的学习能对你有所帮助!

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-10 18:16 , Processed in 0.069878 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表