Objective-C 语法之 Debug 表达式
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 表达式的更多相关文章
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式
当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...
- JAVA基础之JDBC开发、JSTL语法、EL表达式与数据分页
一.直接使用JDBC开发的问题 1.当表中的列很多时,需要写很长的SQL语句 还需要写大量 setXXX() 设置参数语句 读取数据时还需要写大量setXXXX()设置属性语句 2.非常容易出错,而且 ...
- 初学Objective - C语法之代码块(block)
一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...
- Python 基础语法——数字和表达式(包含数学上的一些函数)
>>> 2+2 4 >>> 1/2 0 >>> 1.0/2.0 0.5 >>> 1/2.0 0.5 >>> 1 ...
- Linq之查询表达式语法详解
1.闲言碎语 由于项目的需要接触到Linq,刚开始有些不适应,好多概念都很模糊.不过经过一段时间的摸索,慢慢地对Linq有了一个更加深入的了解.在此记录一下备忘. 2.查询表达式语法 执行L ...
- EL表达式的语法与应用
EL(是Expression Language的缩写),使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护. EL表达式的语法: 语法:$(EL 表达式) $ 和 ...
- EL表达式的语法介绍及九大隐含对象
一. 简介 > JSP表达式 <%= %> 用于向页面中输出一个对象. > 到JSP2.0时,在我们的页面中不允许出现 JSP表达式和 脚本片段. > 使用EL表达式来代 ...
- JS基础语法---分支语句之:三元表达式
获取两个数字中的最大值 用if-else语句 var num1 = 10; var num2 = 100; if (num1 > num2) { ...
- JavaScript表达式和运算符 —— 基础语法(4)
JavaScript基础语法(4) 运算符 运算符用于将一 个或者多个值变成结果值. 使用运算符的值称为操作数,运算符和操作数的组合称为表达式 JS中的运算符可以分成下面几类: 算术运算符 逻辑运算符 ...
随机推荐
- Beaglebone Black教程Beaglebone Black中的Cloud9 IDE基本使用
Beaglebone Black教程Beaglebone Black中的Cloud9 IDE基本使用 Beaglebone Black中的Cloud9 IDE基本使用 Cloud9是集成在Beagl ...
- select 操作选中添加、删除操作Javascript
//添加选中项 function addItem() { var myMember = document.getElementById("myMember"); var other ...
- Java编程的逻辑 (70) - 原子变量和CAS
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- 反射setAccessible()方法
java代码中,常常将一个类的成员变量置为private 在类的外面获取此类的私有成员变量的value时,需要注意: 测试类: public class AccessibleTest { privat ...
- mpvue上手教程
mpvue官网上面已经有了详细的步骤,把每个步骤截图及输出结果做个笔记,供各位看官参考参考~ 1.全局安装 vue-cli $ npm install --global vue-cli 如果你已经设置 ...
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (八)
今天想测试一下“庖丁”分词的效果,编写了一个测试小程序,从文件中读入文本,并将分词结果显示到控制台. 环境平台:Win7+eclipse 过程如下: 1.编辑paoding-analysis.jar中 ...
- 实验四 使用ASP.NET内置对象 总结
这次实验内容是ASP.NET的一些内置对象的熟悉,感觉看到了上学期JSP的影子,很多地方都很像.像Response对象,Request对象,Context对象等等.以前我老是搞混Response对象和 ...
- 安装Cocos2d-x3.0步骤
一.在Windows环境下安装 二.在Mac环境下安装 首先,安装brew工具,参照官方网:http://brew.sh/index_zh-cn.html Cocos2d-x3.0需要安装NDK,SD ...
- mxnet img2rec的使用,生成数据文件
建立文件夹 制作lst文件,即生成train.lst文件python im2rec.py ./mxrec/train ./mxdata --list --recursive train.lst文件格式 ...
- Android 8 wifi 扫描时间间隔
wifi setting界面扫描时间间隔:10s 不在wifi setting界面,扫描时间间隔,最小20s,然后按找2倍的间隔进行递增,40s,60s..., 最大160s PNO 即Preferr ...