puedo como actualizar iphone objective-c ios cocoa-touch ios4

como - no puedo actualizar mi iphone 4



¿Cómo podemos detectar mediante programación qué versión de iOS se está ejecutando el dispositivo? (10)

Actualizar

Desde iOS 8 podemos usar el nuevo método NSProcessInfo en NSProcessInfo

NSOperatingSystemVersion ios8_0_1 = (NSOperatingSystemVersion){8, 0, 1}; if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:ios8_0_1]) { // iOS 8.0.1 and above logic } else { // iOS 8.0.0 and below logic }

Tenga en cuenta que esto se bloqueará en iOS 7, ya que la API no existía antes de iOS 8. Si está soportando iOS 7 o inferior, puede realizar la comprobación de forma segura con

if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)]) { // conditionally check for any version >= iOS 8 using ''isOperatingSystemAtLeastVersion'' } else { // we''re on iOS 7 or below }

Respuesta original iOS <8

En aras de la integridad, aquí hay un enfoque alternativo propuesto por Apple en la Guía de transición de la interfaz de usuario de iOS 7 , que consiste en verificar la versión de Foundation Framework.

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { // Load resources for iOS 6.1 or earlier } else { // Load resources for iOS 7 or later }

Esta pregunta ya tiene una respuesta aquí:

Quiero verificar si el usuario está ejecutando la aplicación en iOS con menos de 5.0 y mostrar una etiqueta en la aplicación.

¿Cómo detecto qué iOS se está ejecutando en el dispositivo del usuario mediante programación?

¡Gracias!


En MonoTouch:

Para obtener el uso de la versión Major:

UIDevice.CurrentDevice.SystemVersion.Split(''.'')[0]

Para uso en versiones menores:

UIDevice.CurrentDevice.SystemVersion.Split(''.'')[1]


La mayoría de las veces, Marek Sebera es genial, pero si eres como yo y encuentras que necesitas revisar la versión de iOS con frecuencia, no quieres ejecutar constantemente una macro en la memoria porque experimentarás una desaceleración muy leve. especialmente en dispositivos más antiguos.

En su lugar, desea calcular la versión de iOS como un flotador una vez y almacenarlo en algún lugar. En mi caso, tengo una clase de singleton de GlobalVariables que uso para verificar la versión de iOS en mi código usando código como este

if ([GlobalVariables sharedVariables].iOSVersion >= 6.0f) { // do something if iOS is 6.0 or greater }

Para habilitar esta funcionalidad en su aplicación, use este código (para iOS 5+ usando ARC):

GlobalVariables.h :

@interface GlobalVariables : NSObject @property (nonatomic) CGFloat iOSVersion; + (GlobalVariables *)sharedVariables; @end

GlobalVariables.m :

@implementation GlobalVariables @synthesize iOSVersion; + (GlobalVariables *)sharedVariables { // set up the global variables as a static object static GlobalVariables *globalVariables = nil; // check if global variables exist if (globalVariables == nil) { // if no, create the global variables class globalVariables = [[GlobalVariables alloc] init]; // get system version NSString *systemVersion = [[UIDevice currentDevice] systemVersion]; // separate system version by periods NSArray *systemVersionComponents = [systemVersion componentsSeparatedByString:@"."]; // set ios version globalVariables.iOSVersion = [[NSString stringWithFormat:@"%01d.%02d%02d", / systemVersionComponents.count < 1 ? 0 : / [[systemVersionComponents objectAtIndex:0] integerValue], / systemVersionComponents.count < 2 ? 0 : / [[systemVersionComponents objectAtIndex:1] integerValue], / systemVersionComponents.count < 3 ? 0 : / [[systemVersionComponents objectAtIndex:2] integerValue] / ] floatValue]; } // return singleton instance return globalVariables; } @end

Ahora puedes comprobar fácilmente la versión de iOS sin ejecutar macros constantemente. Observe en particular cómo convertí [[UIDevice currentDevice] systemVersion] NSString en un CGFloat al que se puede acceder constantemente sin utilizar ninguno de los métodos inapropiados que muchos ya han señalado en esta página. Mi enfoque asume que la cadena de versión tiene el formato n.nn.nn (lo que permite que falten los bits posteriores) y funciona para iOS5 +. En las pruebas, este enfoque se ejecuta mucho más rápido que la ejecución constante de la macro.

Espero que esto ayude a cualquiera que experimente el problema que tuve!


Para obtener información más específica sobre el número de versión con versiones principales y secundarias separadas:

NSString* versionString = [UIDevice currentDevice].systemVersion; NSArray* vN = [versionString componentsSeparatedByString:@"."];

La matriz vN contendrá las versiones principales y secundarias como cadenas, pero si desea hacer comparaciones, los números de versión deben almacenarse como números (ints). Puede agregar este código para almacenarlos en la C-array * versionNumbers :

int versionNumbers[vN.count]; for (int i = 0; i < sizeof(versionNumbers)/sizeof(versionNumbers[0]); i++) versionNumbers[i] = [[vN objectAtIndex:i] integerValue];

* Arrays C utilizados aquí para una sintaxis más concisa.


Sé que soy demasiado tarde para responder a esta pregunta. No estoy seguro de si mi método sigue funcionando en versiones de iOS bajo (<5.0):

NSString *platform = [UIDevice currentDevice].model; NSLog(@"[UIDevice currentDevice].model: %@",platform); NSLog(@"[UIDevice currentDevice].description: %@",[UIDevice currentDevice].description); NSLog(@"[UIDevice currentDevice].localizedModel: %@",[UIDevice currentDevice].localizedModel); NSLog(@"[UIDevice currentDevice].name: %@",[UIDevice currentDevice].name); NSLog(@"[UIDevice currentDevice].systemVersion: %@",[UIDevice currentDevice].systemVersion); NSLog(@"[UIDevice currentDevice].systemName: %@",[UIDevice currentDevice].systemName);

Puede obtener estos resultados:

[UIDevice currentDevice].model: iPhone [UIDevice currentDevice].description: <UIDevice: 0x1cd75c70> [UIDevice currentDevice].localizedModel: iPhone [UIDevice currentDevice].name: Someones-iPhone002 [UIDevice currentDevice].systemVersion: 6.1.3 [UIDevice currentDevice].systemName: iPhone OS


Una simple comprobación de la versión de iOS inferior a 5 (todas las versiones):

if([[[UIDevice currentDevice] systemVersion] integerValue] < 5){ // do something };


[[UIDevice currentDevice] systemVersion];

o compruebe la versión como

Puedes obtener las siguientes macros desde here .

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(IOS_VERSION_3_2_0)) { UIImageView *background = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cs_lines_back.png"]] autorelease]; theTableView.backgroundView = background; }

Espero que esto ayude


La mejor versión actual , sin necesidad de lidiar con la búsqueda numérica dentro de NSString, es definir macros (ver respuesta original: verificar versión de iPhone iOS )

Esas macros existen en github, ver: https://github.com/carlj/CJAMacros/blob/master/CJAMacros/CJAMacros.h

Me gusta esto:

#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

y úsalos así:

if (SYSTEM_VERSION_LESS_THAN(@"5.0")) { // code here } if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) { // code here }

Versión obsoleta a continuación

para obtener la versión del sistema operativo:

[[UIDevice currentDevice] systemVersion]

devuelve una cadena, que se puede convertir en int / float a través de

-[NSString floatValue] -[NSString intValue]

Me gusta esto

Ambos valores (floatValue, intValue) se eliminarán debido a su tipo, 5.0.1 se convertirá en 5.0 o 5 (float o int), para realizar una comparación precisa, tendrá que separarlo de la lista de INTs check aceptado respuesta aquí: Verifique iPhone Versión de iOS

NSString *ver = [[UIDevice currentDevice] systemVersion]; int ver_int = [ver intValue]; float ver_float = [ver floatValue];

y compara asi

NSLog(@"System Version is %@",[[UIDevice currentDevice] systemVersion]); NSString *ver = [[UIDevice currentDevice] systemVersion]; float ver_float = [ver floatValue]; if (ver_float < 5.0) return false;

Para la sintaxis de Swift 4.0

El siguiente ejemplo es solo verificar si el dispositivo es de iOS11 o una versión mayor.

let systemVersion = UIDevice.current.systemVersion if systemVersion.cgFloatValue >= 11.0 { //"for ios 11" } else{ //"ios below 11") }


[[UIDevice currentDevice] systemVersion]


[[[UIDevice currentDevice] systemVersion] floatValue]