我希望我的问题措辞正确,但我想做的实际上是微不足道的。
我有一堆带有静态对象实例化的代码,如下所示:
Foo *aFoo1 = [[[Foo alloc] init] autorelease];
[anArray addObject:aFoo1];
Foo *aFoo2 = [[[Foo alloc] init] autorelease];
[anArray addObject:aFoo2];
我只是想将所有实例化+ anArray 的填充移动到一个单独的头文件中,并且只需在需要的地方包含头文件,而无需创建新类来管理这些实例化的开销。我只想包含头文件,并在完成添加所有上述对象并将其填充到其他地方后访问 anArray。无论如何我可以将上面的内容变成宏吗?理想情况下,我很快就会将所有这些都存储在数据库中,查询数据库并实例化结果集。不管怎样,我很好奇当前编写的格式的答案是什么。
最佳答案
您可以使用以下内容:
#define CREATE_INSTANCE_AND_ADD_TO_ARRAY(TYPE, NAME, ARRAY) \
TYPE * NAME = [[[TYPE alloc] init] autorelease]; \
[ARRAY addObject:NAME]
这样调用:
CREATE_INSTANCE_AND_ADD_TO_ARRAY(Foo, aFoo1, anArray);
CREATE_INSTANCE_AND_ADD_TO_ARRAY(Foo, aFoo2, anArray);
...
关于c - 如何在 Objective-C/ANSI C 中创建用于对象实例化的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139884/