#if para determinar el tipo de dispositivo en .h xcode

Estoy seguro de que esto probablemente sea algo extremadamente fácil (o no se puede hacer), pero no puedo encontrar nada en él.

En uno de mis files .h de classs, necesito determinar si la aplicación se está ejecutando en un iPad o un iPhone. Luego, cambie el valor de #define en consecuencia.

Lo ideal sería que se pareciera a esto:

#if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone #define deltaX 10.0 #define theda 15.0 #define threshHold 267.0 #endif #if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad #define deltaX 78.1 #define theda 67.2 #define threshHold 453.0 #endif 

No estoy seguro de qué usar, cualquier ayuda sería muy apreciada.

¡Gracias por tu time!

Lamentablemente, no puedes hacer esto, ya que en una aplicación universal el mismo código se ejecuta en iPhone que en iPad, por lo que esta decisión debe tomarse en time de ejecución, no en time de compilation.

Debe declarar estas variables en un file de encabezado, y luego establecerlas en el time de ejecución según el valor de UI_USER_INTERFACE_IDIOM() .

Un poco tarde para la fiesta, pero pensé que compartiría lo que funcionaba para mí.

Una solución que ha estado funcionando para mí es definir IS_IPAD e IS_IPHONE en algún lugar similar

 #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 

Luego, cuando necesite las otras definiciones basadas en ipad / iphone, haga algo como esto

 #define deltaX (IS_IPAD? 78: 10) 

Ya tienes el código para determinar el dispositivo, así que está bien.

Crearía tu define de la siguiente manera:

 #define padDeltaX 10.0 #define phoneDeltaX 78.1 ... etc 

Luego en su file de class:

 if (if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { // do iPhone processing with the variables } else { // must be iPad } 

Alternativamente:

 float variableOne, variableTwo; // etc if (if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { variableOne = phoneDeltaX; variableTwo = phoneTheta; // etc } else { // must be iPad variableOne = padDeltaX; variableTwo = padTheta; // etc } // now do the shanetworking processing with variableOne, variableTwo etc 

¡Espero que esto ayude!