iphone - Objective c - 以 NSDictionary 作为参数的宏

标签 iphone objective-c ios macros

我有一个只想在某些情况下执行的方法(例如我不想在 Debug模式下执行它..) 该方法有两个参数:NSStringNSDictionary

例如此类方法:

+ (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/

相关文章:

ios - 通过 Xcode Scheme 添加预处理器定义

android - 如何避免在 Flutter 的分屏模式下调整大小?

android - Cordova/Phonegap 困惑

ios - 如何在 Uber 等 iOS 设备上跟踪 GPS 位置以进行充电?

objective-c - 以 block 作为参数的方法的函数头约定/预期样式

ios - objective-c 中的函数执行超时

ios - Cocoapods:LoadError - 没有要加载的文件

iphone - 在 iPhone 上解析脏 HTML

iphone - 从 uiview 获取图像

iphone - NSUrl 变为 null 时有效的 URL 字符串