我有一个只想在某些情况下执行的方法(例如我不想在 Debug模式下执行它..)
该方法有两个参数:NSString
和 NSDictionary
例如此类方法:
+ (void)doSomethingWithString:(NSString *)str andDictionary:(NSDictionary *)dic;
所以我想定义一个宏,并在不需要时禁用它。
像这样的事情:
#define METHOD_ENABLED
#ifdef METHOD_ENABLED
#define MACRO_METHOD(_STR, _DIC) [SomeClass doSomethingWithString:_STR andDictionary:_DIC];
#else
#define MACRO_METHOD(_STR, _DIC)
#endif
要使用它,我调用:
MACRO_METHOD(@"a string", [NSDictionary dictionaryWithObject:@"object" forKey:@"key]);
这是我应该做的吗?我什至可以有一个以 NSDictionary 作为参数的宏吗?
最佳答案
当然。只要您保证 _STR
评估为字符串并且 _DIC
真正评估为字典,您所做的事情就没有问题。这种类型的宏通常用于调试/发布/版本条件编译。
顺便说一句,使用最新的 Clang 编译器,您可以将 [NSDictionary DictionaryWithObject:@"object"forKey:@"key"]
简化为 @{@"key":@"object"}
关于iphone - Objective c - 以 NSDictionary 作为参数的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12655283/