Lorsque l'on désire compiler différemment selon que l'on soit sur iPhone ou sur Mac, naturellement on fait :
#if TARGET_OS_MAC
// code pour le mac
#else
// code pour iPhone iPad
#endif
Mais l'on a tort ! Car TARGET_OS_MAC renvoie 1 même si l'on est sous iPhone ! Il faut inverser le test pour que cela fonctionne :
#if TARGET_OS_IPHONE
// code pour iPhone iPad
#else
// code pour le mac
#endif
Ou utiliser TAGET_OS_OSX qui lui renvoie zéro avec un iPhone et un iPad.
#if TARGET_OS_OSX
// code pour le mac
#else
// code pour iPhone iPad
#endif
C'est nul, je sais... Mais il faut le savoir, un iPhone est un Mac...
Au passage, vous pouvez aussi pour être plus précis utilisez TARGET_OS_MACCATALYST.
#if TARGET_OS_MAC
// code pour le mac
#else
// code pour iPhone iPad
#endif
Mais l'on a tort ! Car TARGET_OS_MAC renvoie 1 même si l'on est sous iPhone ! Il faut inverser le test pour que cela fonctionne :
#if TARGET_OS_IPHONE
// code pour iPhone iPad
#else
// code pour le mac
#endif
#if TARGET_OS_OSX
// code pour le mac
#else
// code pour iPhone iPad
#endif
Au passage, vous pouvez aussi pour être plus précis utilisez TARGET_OS_MACCATALYST.
Commentaires