我正在定义一个 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/