c - 如何在 Objective-C/ANSI C 中创建用于对象实例化的宏

标签 c objective-c

我希望我的问题措辞正确,但我想做的实际上是微不足道的。

我有一堆带有静态对象实例化的代码,如下所示:

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/

相关文章:

c - 基本 C 服务器 : Connection Refused Error

java - JNI 返回日期

c - 有没有办法替换标准 C 中的 kbhit() 和 getch() 函数?

c - 为什么使用 AF_UNIX 系列的文件描述符会导致 accept() 出现 "invalid argument"错误?

ios - React Native 限制?

objective-c - iOS:Vimeo 视频播放器

ios - 遇到缺少 enclosing_building 字段的室内关卡

c - 在C中使用数学库显示1弧度的正弦四舍五入到小数点后三位

objective-c - 导航器 Controller 和标签栏 Controller 同时存在?

ios - 如何获取此 NSDictionary 的值