Domanda

Nell'esempio seguente quanti messaggi vengono inviati a myObject?

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

Sono solo curioso di Objective-C potenzialmente nella cache del Valore restituito da myStringProperty sullo stack.Il valore restituito da myStringProperty potrebbe cambiare tra i messaggi successivi, quindi forse la cache non ha senso.

È stato utile?

Soluzione

Tre

.

Sono solo curioso di avere obiettivi-C potenzialmente nella cache del valore restituito da MyStringProperty sullo stack.Il valore restituito da MyStringProperty potrebbe cambiare tra i messaggi successivi, quindi forse la cache non ha senso.

No, non è memorizzato nella cache.Ogni messaggio OBJC viene inviato, fornito ovviamente myObject non è nil.

Il compilatore non ha idea di alcun effetto collaterale all'interno dell'esecuzione del metodo (1) o dell'influenza dello stato globale (2).

    .
  1. ad esempio.MyObject o qualsiasi cosa fa riferimento sempre cambia durante l'esecuzione di ottenere myStringProperty?
  2. ad esempio.è il risultato interessato dall'ora corrente?

Altri suggerimenti

Puoi impostare un punto di interruzione su - [MyObject MyStringProperty] e vedere da solo.Se MyStringProperty è un metodo Gettter che implemiti, fai clic sulla grondaia sinistra accanto all'implementazione del metodo per impostare il punto di interruzione.

Se questo è un metodo di accessori sintetizzato, inseriscilo come un punto di interruzione simbolico nel navigatore di breakpoint di Xcode.Fare clic sull'icona freccia destra nella sezione Navigator per selezionare il Breakpoint Navigator, premere + nella parte inferiore della finestra e scegliere "Aggiungi interruzione simbolica ...".Digita - [theclassname mystringproperty] Nel campo dei simboli, quindi fare clic su Fine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top