iOS通过宏重新设计UITableView

时间:2012-04-12 11:57:11

标签: ios uitableview custom-cell

我通过定义宏#define DRAW_SET 1

来自定义绘制我的TableView单元格

在应用程序的整个生命周期的某个地方,我想要更改单元格的外观,因此我实现了一个IBAction方法,然后#undef DRAW_SET宏,并使用值#define DRAW_SET 2定义它。

我遇到的问题是宏未被定义和/或重新定义。这可能是公共/私人电话的原因吗?

谢谢,克林顿

1 个答案:

答案 0 :(得分:3)

宏是编译器指令。编译后,每个宏都替换为相应的值/语句。 #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
}