我通过定义一个宏来自定义绘制我的 TableView 单元格#define DRAW_SET 1
在应用程序的整个生命周期中的某个地方,我想更改单元格的外观,所以我实现了一个 IBAction 方法,然后#undef DRAW_SET
是宏并将其定义为 2 #define DRAW_SET 2
。
我遇到的问题是宏没有被未定义和/或重新定义。这可能是由于公共/私人电话造成的吗?
谢谢,克林顿
我通过定义一个宏来自定义绘制我的 TableView 单元格#define DRAW_SET 1
在应用程序的整个生命周期中的某个地方,我想更改单元格的外观,所以我实现了一个 IBAction 方法,然后#undef DRAW_SET
是宏并将其定义为 2 #define DRAW_SET 2
。
我遇到的问题是宏没有被未定义和/或重新定义。这可能是由于公共/私人电话造成的吗?
谢谢,克林顿
宏是编译器指令。编译后,每个宏都替换为相应的值/语句。 #undef
允许您取消定义宏,但同样,作为编译逻辑的一部分,而不是运行时逻辑。
通常,宏用于在开发周期中静态添加调试代码,然后在部署应用程序时将其删除(以减小大小)。例如:
#ifdef DEBUG
// regular logic you don't want in your final app
#endif
我使用宏的另一个地方是针对不同的操作系统时:
#ifdef WINDOWS
// something windows specific
#endif
#ifdef AIX
// something AIX specific
#endif
这些宏可以在不同的地方定义——你的编译器会给你很多免费的,你可以将它们设置为你的构建过程的一部分。
但这里的关键是,它们在运行时是不可更改的。
您可能想要做的是在某处定义一个变量,可能在您的应用程序委托上作为一个属性,这很容易从您应用程序的任何地方访问:
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
然后在您的代码中查看已设置的变量:
if (appDelegate.myFlag == 1) {
// render my cell in one way
} else {
// render my cell in another way
}