OC中的Debug表达式
2015-10-15 18:38
197 查看
有程序的地方就有bug,有bug的地方就需要debug。对于程序员来说,coding的过程便是制造bug和解决bug。Objective定义了不少表达式来协助debug的流程,将这些表达式用在NSLog中,可以简化部分工作,快速定义到debug的部分。 比如以下代码
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
NSLog(@"\n function: %s\n Pretty function: %s\n line: %d\n file: %s\n", __func__,__FUNCTION__,__LINE__,__FILE__);
}
return self;
}
运行结果如图:
![](http://images2015.cnblogs.com/blog/680743/201510/680743-20151015183017757-1324975705.png)
另外有一些Core Foundation的方法可以从CFString的层级拿到一些有用的字符串,包括且不限于selector,class,protocol等,参考下面的代码:
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init])
{
// NSLog(@"\n function: %s\n Pretty function: %s\n line: %d\n file: %s\n", __func__,__FUNCTION__,__LINE__,__FILE__);
NSLog(@"Current selector: %@",NSStringFromSelector(_cmd));
NSLog(@"Object class: %@",NSStringFromClass(self.class));
NSLog(@"Filename: %@",[[NSString stringWithUTF8String:__FILE__] lastPathComponent]);
}
return self;
}
运行结果如图:
![](http://images2015.cnblogs.com/blog/680743/201510/680743-20151015183742319-1283239283.png)
拿到了相关的字符串,其实这并不仅在调试中有用,在进行selector的传递时也很好用~
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
NSLog(@"\n function: %s\n Pretty function: %s\n line: %d\n file: %s\n", __func__,__FUNCTION__,__LINE__,__FILE__);
}
return self;
}
运行结果如图:
![](http://images2015.cnblogs.com/blog/680743/201510/680743-20151015183017757-1324975705.png)
__func__,
__PRETTY_FUNCTION__,
__LINE__,
__FILE__等都是系统预留的定义词,简单易用
另外有一些Core Foundation的方法可以从CFString的层级拿到一些有用的字符串,包括且不限于selector,class,protocol等,参考下面的代码:
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init])
{
// NSLog(@"\n function: %s\n Pretty function: %s\n line: %d\n file: %s\n", __func__,__FUNCTION__,__LINE__,__FILE__);
NSLog(@"Current selector: %@",NSStringFromSelector(_cmd));
NSLog(@"Object class: %@",NSStringFromClass(self.class));
NSLog(@"Filename: %@",[[NSString stringWithUTF8String:__FILE__] lastPathComponent]);
}
return self;
}
运行结果如图:
![](http://images2015.cnblogs.com/blog/680743/201510/680743-20151015183742319-1283239283.png)
拿到了相关的字符串,其实这并不仅在调试中有用,在进行selector的传递时也很好用~
相关文章推荐
- requireJS对文件合并与压缩(二)
- Can you Smell the iBeacon?
- Java拆数
- PHP文件操作
- cocos2dx 开发环境配置
- Codeforces Round #320 (Div. 2) A. Raising Bacteria
- 关于EL表达式
- 获得xml节点,节点属性,节点内容
- hdu2680(最短路spfa!此题有重大发现)
- [转]android中解析后台返回的json字符串
- 在字符串定义时,在字符串中间插入'\0'字符
- 测试阶段效率如何提升
- Android Studio 打包及引用 aar
- ie6/ie7/ie8不兼容html5的方法
- could only be replicated to 0 nodes, instead of 1解决办法
- Python 登录网站后台
- Scala十分钟快速入门
- Python 登录网站后台
- VS 远程发布IIS
- git archive用法