main.m

 #import <Foundation/Foundation.h>
#import "TestClass.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *purposeInfo = @"拿到的信息不仅在Debug中有用,而且在selector的传递也很有用";
[TestClass testDebugKeyword:purposeInfo];
}
return ;
}

TestClass.h

 #import <Foundation/Foundation.h>

 @interface TestClass : NSObject
+ (void)testDebugKeyword:(NSString *)purposeInfo; @end

TestClass.m

 #import "TestClass.h"

 @implementation TestClass

 + (void)testDebugKeyword:(NSString *)purposeInfo {
NSMutableString *mStrInfo = [[NSMutableString alloc] initWithString:purposeInfo];
[mStrInfo appendString:@"\n\nDebug时一些系统预留定义词的用法如下:\n"];
[mStrInfo appendFormat:@"__func__: %s\n", __func__];
[mStrInfo appendFormat:@"__PRETTY_FUNCTION__: %s\n", __PRETTY_FUNCTION__];
[mStrInfo appendFormat:@"__LINE__: %d\n", __LINE__];
[mStrInfo appendFormat:@"__FILE__: %s\n", __FILE__]; [mStrInfo appendString:@"\n\nDebug时一些Core Foundation方法的用法如下:\n"];
[mStrInfo appendFormat:@"NSStringFromSelector(_cmd): %@\n", NSStringFromSelector(_cmd)];
[mStrInfo appendFormat:@"NSStringFromClass([self class]): %@\n", NSStringFromClass([self class])];
[mStrInfo appendFormat:@"[[NSString stringWithUTF8String:__FILE__] lastPathComponent]: %@\n", [[NSString stringWithUTF8String:__FILE__] lastPathComponent]]; NSLog(@"%@", mStrInfo);
} @end

结果:

 -- ::16.353 OCDebugKeyword[:] 拿到的信息不仅在Debug中有用,而且在selector的传递也很有用

 Debug时一些系统预留定义词的用法如下:
__func__: +[TestClass testDebugKeyword:]
__PRETTY_FUNCTION__: +[TestClass testDebugKeyword:]
__LINE__:
__FILE__: /Users/Kenmu/Documents/iOSDevelopment/OCDebugKeyword/OCDebugKeyword/TestClass.m Debug时一些Core Foundation方法的用法如下:
NSStringFromSelector(_cmd): testDebugKeyword:
NSStringFromClass([self class]): TestClass
[[NSString stringWithUTF8String:__FILE__] lastPathComponent]: TestClass.m

Objective-C 语法之 Debug 表达式的更多相关文章

  1. Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式

    当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...

  2. JAVA基础之JDBC开发、JSTL语法、EL表达式与数据分页

    一.直接使用JDBC开发的问题 1.当表中的列很多时,需要写很长的SQL语句 还需要写大量 setXXX() 设置参数语句 读取数据时还需要写大量setXXXX()设置属性语句 2.非常容易出错,而且 ...

  3. 初学Objective - C语法之代码块(block)

    一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...

  4. Python 基础语法——数字和表达式(包含数学上的一些函数)

    >>> 2+2 4 >>> 1/2 0 >>> 1.0/2.0 0.5 >>> 1/2.0 0.5 >>> 1 ...

  5. Linq之查询表达式语法详解

    1.闲言碎语 由于项目的需要接触到Linq,刚开始有些不适应,好多概念都很模糊.不过经过一段时间的摸索,慢慢地对Linq有了一个更加深入的了解.在此记录一下备忘.      2.查询表达式语法 执行L ...

  6. EL表达式的语法与应用

    EL(是Expression Language的缩写),使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护. EL表达式的语法: 语法:$(EL 表达式) $  和 ...

  7. EL表达式的语法介绍及九大隐含对象

    一. 简介 > JSP表达式 <%= %> 用于向页面中输出一个对象. > 到JSP2.0时,在我们的页面中不允许出现 JSP表达式和 脚本片段. > 使用EL表达式来代 ...

  8. JS基础语法---分支语句之:三元表达式

    获取两个数字中的最大值 用if-else语句        var num1 = 10;        var num2 = 100;        if (num1 > num2) {     ...

  9. JavaScript表达式和运算符 —— 基础语法(4)

    JavaScript基础语法(4) 运算符 运算符用于将一 个或者多个值变成结果值. 使用运算符的值称为操作数,运算符和操作数的组合称为表达式 JS中的运算符可以分成下面几类: 算术运算符 逻辑运算符 ...

随机推荐

  1. 移动web开发(二)——viewport

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scal ...

  2. 记一次从git@osc导入Android项目到Eclipse的过程

    . . . . . 之前写了一个Android的小项目,放在了git@osc上面托管代码.第一次开发完之后直接用git bash提交上去,然后每次修改都是手工通过git bash往上面合并代码.感觉很 ...

  3. 一键安装mysql

    #!/bin/bash # # Rrogram: # install mysql # History: # -- luoqi v0. release # email: # @qq.com #以下rpm ...

  4. Android 一条竖线或横线、画边框

    Android 一条竖线或横线.画边框 博客分类: android androidshape  1.画线 [img] http://pic002.cnblogs.com/images/2010/122 ...

  5. OpenCV 图像处理的各种滤镜效果实现

    引自:https://blog.csdn.net/column/details/stylizefliter.html 学习OpenCV:滤镜系列(15)——羽化(模糊边缘) 在PHOTOSHOP里,羽 ...

  6. radio切换,点击方法onclick

    <label><input name="Status1" type="radio" value="first" check ...

  7. 从Java开发者的视角解释JavaScript

    我们无法在一篇博文里解释JavaScript的所有细节.如果你正或多或少地涉及了web应用程序开发,那么,我们的Java工具和技术范围报告揭示了,大多数(71%)Java开发者被归到了这一类,只是你对 ...

  8. Entity Framework Code First - Change Tracking

    In this post we will be discussing about change tracking feature of Entity Framework Code First. Cha ...

  9. Qt封装QTcpServer参考资料--QT4中构建多线程的服务器

    首先说一下对多线程这个名词的理解过程.以前听说过很多次多线程这个词,而且往往与服务器联系起来,因此一直把多线程误解为服务器特有的功能:直到这次课程设计,仔细学习了一下多线程的机制,才知道真正的意思.简 ...

  10. C#往SQLServer中插入大数据

    以前插入大数据的时候都是一条一条的插入,由于电脑配置不行,有一次17万条数据用了半个小时才插入完成,那个蛋疼啊! 前面听杨中科老师的课,发现一个很好的东西,25万条数据配置好的电脑几秒钟就完成了,那是 ...