OC中的Debug表达式

有程序的地方就有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;

}

运行结果如图:

__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;

}

 

运行结果如图:

 

拿到了相关的字符串,其实这并不仅在调试中有用,在进行selector的传递时也很好用~

 

 

posted on 2015-10-15 18:38  哈利波特大  阅读(439)  评论(0编辑  收藏  举报