Mensaje básico Contando en Objective-C
-
14-11-2019 - |
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.
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 seanil
.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).
- por ejemplo.¿MyObject o cualquier cosa que referencias cambia durante la ejecución de obtener
myStringProperty
?- 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.