我有两个预处理器宏,可以在调用方法时记录。一个宏只记录方法的名称;我用于UITableViewDelegate方法的另一个宏来记录方法的名称和参数indexPath
的值(带有两个索引的NSIndex *)。
#define LogMethodName \
{ NSLog(@"%s", __PRETTY_FUNCTION__) ; }
#define LogMethodNameAndIndexPath \
{ NSLog(@"%s {%lu, %lu}", __PRETTY_FUNCTION__, [indexPath indexAtPosition:0] , [indexPath indexAtPosition:1] ) ; }
我怀疑这是可能的,但我想要一个宏来完成这两个工作:当在具有indexPath
参数的方法中使用时,它会执行类似于{{的代码1}},当在缺少LogMethodNameAndIndexPath
参数的方法中使用(因此indexPath
未定义)时,它会执行indexPath
之类的代码。
这可能吗?我已经查看了几十个Stack Overflow问题,但我还没有找到一个我能理解的答案。我已经尝试过下面看到的代码,但是当我在第4行中引用LogMethodName
时Xcode不喜欢它,如果以前没有定义过,并且没有办法让Xcode放心,我会要求它只执行第4行当indexPath
被定义时。
indexPath