マクロを定義して 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
私がマクロを使用したもう 1 つの場所は、さまざまなオペレーティング システムを対象とする場合です。
#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
}