2012-04-12 42 views
0

我自定義在整個我想改變細胞的外觀應用程序的生命週期定義宏#define DRAW_SET 1的iOS重新設計的UITableView通過宏

某處畫我的TableView細胞,使我實現了一個IBAction爲方法,然後#undef DRAW_SET該宏並將其定義爲值爲2 #define DRAW_SET 2

我遇到的問題是該宏未被定義和/或重新定義。這可能是由於公共/私人電話?

謝謝,克林頓

回答

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 
}