を確認するのCPUARM
が正しい解決策です。シミュレータ用にコンパイルされた iOS バイナリは ARM ではなく、実際には x86 です。iOSコードを次のようにラップしてください{$IFDEF IOS}
:
{$IFDEF IOS}
{$IFDEF CPUARM}
s := 'iOS device';
{$ELSE}
s := 'iOS Simulator';
{$ENDIF}
{$ENDIF}
Delphi は、iOS デバイスには ARM コンパイラを使用しますが、iOS シミュレータには x86 コンパイラを使用します。
利用可能なコンパイラ条件は、Embarcadero の DocWiki に記載されています。
条件付きコンパイル (Delphi) | 事前定義された条件
CPUARM
DCCIOSARM コンパイラ(iOS デバイス)によって定義されます。
CPU386
DCCIOS32 コンパイラ(iOS シミュレータ)CPUX86
によって定義されます。
XE6 の DCCIOSARM.EXE および DCCIOS32.EXE 実行可能ファイルに物理的に存在する条件値を見ると、次のことが確認されます。
DCCIOSARM.EXE:
**CPUARM**
DCC
NEXTGEN
AUTOREFCOUNT
WEAKINSTREF
WEAKINTFREF
WEAKREF
EXTERNALLINKER
NATIVECODE
POSIX
POSIX32
MACOS
MACOS32
**IOS**
VER270
CONSOLE
BCB
PIC
UNICODE
CONDITIONALEXPRESSIONS
DCCIOS32.EXE:
**CPU386**
**CPUX86**
DCC
NEXTGEN
AUTOREFCOUNT
WEAKINSTREF
WEAKINTFREF
WEAKREF
NATIVECODE
POSIX
POSIX32
MACOS
MACOS32
**IOS**
ALIGN_STACK
UNDERSCOREIMPORTNAME
PC_MAPPED_EXCEPTIONS
ASSEMBLER
VER270
CONSOLE
BCB
PIC
UNICODE
CONDITIONALEXPRESSIONS