ios - MACRO 函数不返回 Objective-C 对象

标签 ios objective-c c macros

我正在定义一个 MACRO函数返回给我 NSDictionary目的。这是我尝试过的代码

#define GetDictionary(name,description,imageName) [NSDictionary dictionaryWithObjects:@[name,description,imageName] forKeys:@[ATTRIBUTE_TITLE,ATTRIBUTE_DESCRIPTION,ATTRIBUTE_IMAGE_NAME]]

#define GetDictionary(name,description,imageName) @{ATTRIBUTE_TITLE:name,ATTRIBUTE_DESCRIPTION:description,ATTRIBUTE_IMAGE_NAME:imageName}

但每次我尝试调用此方法来获取字典对象时,编译器都会给出错误“类型 void * 的集合元素不是 objective-c 对象”。我们将不胜感激立即提供帮助。

最佳答案

首先,如果可能的话,避免使用此类宏。它们往往会引起这类头痛。我假设您还有 ATTRIBUTE_TITLE 等更多宏。我强烈建议使用简单函数而不是宏。您将获得更容易理解的代码。很少有理由以这种方式使用宏。

我的第一个怀疑是 ATTRIBUTE_TITLE (或相关宏之一)不是一个正确的对象。您很可能做过类似的事情:

#define ATTRIBUTE_TITLE "foo"

而不是

#define ATTRIBUTE_TITLE @"foo"

尽管 void* 投诉很有趣……无论如何,将其切换为函数,并将 ATTRIBUTE_* 更改为常量而不是宏,可能会使错误变得明显。

关于ios - MACRO 函数不返回 Objective-C 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18620732/

相关文章:

iphone - 如何将推送通知从一个 bundle id 转移到另一个 bundle id?

ios - 将类实例重置为其在 ios 中的先前状态

ios - Objective-C:使用元素数组设置 alpha 值

ios - 清除 NSUserDefaults

ios - 计算后 SKRoutingService 不缩放到路由

iphone - 如何在 iPhone 中获取两天之间的差异

c - 使用topup函数

c - Vigenere Cipher - 如何忽略纯文本中的空格(在 C 中)?

iphone - 如何在xcode中创建控件

ios - 在 PFQueryTableViewController 中过滤查询结果