Domanda

Forse la mia memoria è andata completamente fuori di testa, ma penso di ricordare che dichiarare i puntatori senza inizializzarli li ha portati a zero. Ma recentemente questo non sembra essere il caso. È sempre stato così? O ha qualcosa a che fare con le impostazioni del compilatore?

È stato utile?

Soluzione

Le variabili di istanza degli oggetti sono inizializzate su nil in alloc (l'intero oggetto è azzerato).

Modifica Inoltre, le variabili di archiviazione globali e statiche vengono inizializzate su zero (6.7.8 10 del Standard C99 , grazie Derek per averlo segnalato).

Le variabili dello stack locale non vengono inizializzate automaticamente. Questo non è cambiato nella storia conosciuta.

Altri suggerimenti

Da Transizione alle note di rilascio ARC :

  

Le variabili di stack vengono inizializzate con nil

     

L'utilizzo di ARC, le variabili di stack forte, debole e di autoreleasing sono ora implicitamente inizializzate con nil . Ad esempio:

- (void)myMethod {
    NSString *name;
    NSLog(@"name: %@", name);
}
     

registrerà null per il valore del nome piuttosto che forse il crash.

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