0

私はユニバーサル アプリを構築しており、prefix.pch に次のマクロを含めて、クラス内のデバイス タイプをすばやく識別できるようにしています。

#define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad

なぜこれが機能するのか混乱しています。私の理解では、prefix.pch は事前にコンパイルされているため、IS_IPAD 変数の値は実行時ではなくコンパイル時に設定されるため、アプリがコンパイルされたデバイスに対して値が常に設定されるようです。それとも、iPhone と iPad の両方用にコンパイルされたユニバーサル アプリですか?

4

1 に答える 1

3

マクロは、コンパイル中のグローバル検索と置換のようなものです。コンパイルすると、前処理の一部として のすべてのインスタンスIS_IPADが文字どおり に置き換えられます。UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad次に、ファイルがコンパイルされます。

したがって、コードで目的のランタイム チェックが行われます。このマクロを使用すると、入力が少なくなります。

于 2012-12-19T17:27:28.350 に答える