Tengo una aplicación para iPad en la que llego el UDID del dispositivo mediante el siguiente código en el método viewDidLoad.

uid = [[UIDevice currentDevice] uniqueIdentifier];
uid = [uid stringByReplacingOccurrencesOfString:@"-" withString:@""];

Quería quitar los guiones en la cadena.

Más tarde, en otra llamada al método, yo intente acceder a esta uid cadena (lo cual es una propiedad de esta clase),

NSLog("Loading request with UDID: %@", uid);

y me da el siguiente en la ventana de la consola al intentar imprimir.

Loading request with UDID: (
    <WebView: 0x4b0fb90>
)

¿Por qué es la impresión de la dirección de memoria, en lugar de la propia cadena? Gracias!

Uh… el UDID no debería tener guiones.
Que la primera línea de código devuelve una cadena con los guiones. Te lo prometo.
En el simulador o dispositivo? Me parece recordar que el simulador es extraño por que. Todos los dispositivos tienen sin formato hexadecimal, minúsculas UDIDs, aunque.
Es Apple-legal el uso de uniqueIdentifier? Pensé que no quería que los desarrolladores de ahorro de este.
UIID ha guiones, no UDID.

OriginalEl autor Liam | 2010-07-29

3 Comentarios

  1. 10

    El problema que estamos teniendo, tiene que ver con la gestión de memoria. He tenido exactamente este problema antes.

    Cuando NSLog el uid, lo que se obtiene es la dirección de un WebView objeto. Por qué tendría que suceder cuando el líquido es un NSString??? Deja que te lleve en un tour guiado de la magia de la gestión de la memoria 😀

    Cuando se establece el uid variable en esta línea:

    uid = [uid stringByReplacingOccurrencesOfString:@"-" withString:@""];

    Lo que hice fue asignar un autoreleased variable de líquido. Eso significa que va a ser liberado y la ubicación de la memoria estarán en juego. Entre esta función termina y la próxima vez que se acceda a él, ha sido liberado y que algo más estaba allí almacenados.

    ¿Cómo se puede solucionar este problema? Cuando se asigna algo a una propiedad como uid, SIEMPRE hacerlo a través de los métodos setter creado por @declaración de propiedad. El uso de cualquiera de self.uid = string o [self setUid:string. Este correctamente la liberación de la cadena anterior y retener a uno nuevo.

    Este es un problema que me ha costado MUCHAS horas tratando de encontrar la línea problemática. Otro síntoma que puede pasar es que el programa se bloquea cuando intenta enviar un mensaje a un objeto lanzado. Estos pueden ser MUY difíciles de localizar. Espero que mi respuesta le ayuda a usted y usted no tiene que soportar la frustración 🙂

    Buena suerte!

    Gracias tan mucho! No puedo creer que nunca se me ocurrió usar el auto. Y, sí, esto era muy difícil de error a la pista de abajo. Yo no podía por la vida de averiguar por qué yo era la impresión de una dirección de memoria en lugar del valor.
    Dan, no creo que el problema aquí. Autoreleased instancias de salir con su grupo de liberación automática de la piscina después de que el programa sale del ámbito en el que la instancia fue creada. Por lo general, no es necesario retener un objeto que sólo se utiliza a nivel local dentro de un ámbito determinado. Yo creo que la razón por @Liam problema es nacho4d la respuesta.

    OriginalEl autor Dan Carter

  2. 3

    NSLog(«…») debe ser NSLog(@»…»)

    por la forma en que usted no tiene que hacer [uid stringByReplacingOccurrencesOfString:@»-» withString:@»»]; la cadena original no contiene ningún «-«
    Hmmm, me pudo haber confundido a mí mismo con algún otro código que necesita la cadena de reemplazo. Y sí, yo cometí un error de tipeo NSLog(@»…»);
    En realidad, acabo de comprobar de nuevo. Tiene guiones.

    OriginalEl autor nacho4d

  3. 2

    uniqueIdentifier fue deprecapted de iOS 5.

    Debe utilizar otra función:

    [[[UIDevice currentDevice] identifierForVendor] UUIDString]
    Sin embargo, para un simulador de dispositivo el identificador devuelto por identifierForVendor es diferente para cada nueva ejecución de la aplicación en iOS 9.3 (y antes?), así que no es muy útil. En iOS 10.1 es un identificador coherente.

    OriginalEl autor thanhzusu

Dejar respuesta

Please enter your comment!
Please enter your name here