Geschrieben von: Philipp
|
FRIDAY, 25 JULY 2008 16:33 |
FRAGE:
Wie kann ich im Code nach Target-Device unterscheiden?
ANTWORT:
|
Es gibt einige Präprozessor-Direktiven, welche in jedem Projekt zur Verfügung stehen. Je nach dem ob Ihr für den Simulator oder für das Gerät direkt kompeliert, findet Ihr auf Eurer Platte unter
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/usr/include/ oder eben unter
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/
eine Datei namens TargetConditionals.h
Dort findet Ihr u.a. die defines TARGET_OS_IPHONE und TARGET_IPHONE_SIMULATOR. Das define TARGET_OS_IPHONE ist sowohl für den Simulator als auch für das tatsächliche iPhone aktiv, wohin gegen jedoch das define TARGET_IPHONE_SIMULATOR nur für den Simulator aktiv ist.
Um nun einige Programmabschnitte in eurem Code nicht für den Simulator oder aber sogar nur für diesen zu kompelieren, könnt Ihr diese Code-Abschnitte wie folgt ausgrenzen:
#if defined(TARGET_IPHONE_SIMULATOR) && (TARGET_IPHONE_SIMULATOR==0)
// mache etwas wenn es das iPhone aber nicht der simulator ist
#else
// ansonsten mache etwas anderes
#endif
// oder
#if defined(TARGET_IPHONE_SIMULATOR) && (TARGET_IPHONE_SIMULATOR==1)
// mache etwas wenn es definitiv der iPhone Simulator ist
#else
// ansonsten mache etwas anderes
#endif
Eine andere und auch kürzere Variante, um zu ermitteln ob es sich um den Simulator handelt oder nicht, wäre folgende:
#if !(TARGET_IPHONE_SIMULATOR)
// es handelt sich NICHT um den Simulator
#else
// es handelt sich um den Simulator
#endif
|
|
LAST_UPDATED2 |