为什么返回似乎在objc define宏中造成麻烦

时间:2013-10-31 16:03:35

标签: ios objective-c xcode macros c-preprocessor

我一直在寻找答案,但我的关键词 - fu只是让我失望。

我有一个我在objc / Xcode中使用的宏:

#define strongify(source, target) __strong typeof(source) target = source; if(target == nil) NSLog(@"variable was already nil")

这导致我经常需要像这样编写代码:

strongify(weakSelf, strongSelf);
if (!strongSelf) return;

所以我认为我会使用以下内容扩展该宏:

#define strongifyOrReturn(source, target) __strong typeof(source) target = source; if(target == nil) return

Xcode拒绝自动填充它并抱怨它在编译时不知道它。

但是,如果我不使用return关键字并且只使用相同的宏名称的NSLog,Xcode将很乐意按照我的要求进行操作,新名称会列在自动完成建议中。

我希望你们中的一些人能说出为什么会这样......

1 个答案:

答案 0 :(得分:0)

其他有类似问题的人,应该试着看看他们是不是被Xcode哄骗了。在我的MBP过夜休眠之后,它现在自动完成并编译并且通常很高兴。

所以要从中汲取教训,重新启动Xcode并在SO上发布问题之前重新测试。叹息。