Pregunta

En el siguiente ejemplo, ¿cuántos mensajes se envían a myObject?

- (void) myMethod:(id) myObject
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
}

Sólo tengo curiosidad por el Objective-C potencialmente en caché el valor devuelto por myStringProperty en la pila.El valor devuelto por myStringProperty podría cambiar entre mensajes sucesivos, por lo que quizás el almacenamiento en caché no tiene sentido.

¿Fue útil?

Solución

tres

Tengo curiosidad por el objetivo de Objective-C potencialmente en caché el valor devuelto por MyStringProperty en la pila.El valor devuelto por MyStringProperty podría cambiar entre mensajes sucesivos, así que tal vez el almacenamiento en caché no tiene sentido.

No, no está en caché.Se envía cada mensaje OBJC, siempre que el curso myObject no sea nil.

El compilador no tiene idea de ningún efecto secundario dentro de la ejecución del método (1) o la influencia del estado global (2).

  1. por ejemplo.¿MyObject o cualquier cosa que referencias cambia durante la ejecución de obtener myStringProperty?
  2. por ejemplo.¿Se ve afectado el resultado por la hora actual?

Otros consejos

Puede establecer un punto de interrupción en - [MyObject MyStringProperty] y ver por sí mismo.Si MyStringProperty es un método de Getter que se implementa, simplemente haga clic en el canal izquierdo junto a la implementación del método para configurar el punto de interrupción.

Si este es un método de accesorios sintetizado, ingrese como un punto de interrupción simbólico en el navegador de los puntos de interrupción de Xcode.Haga clic en el icono de la flecha derecha en la sección del navegador para seleccionar el Punto de BreakPoint Navigator, presione + en la parte inferior de la ventana, y elija "Agregar punto de interrupción simbólico ...".Tipo - [TheclassName MyStringProperty] En el campo Símbolo, luego haga clic en Listo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top