2010-03-28 13 views

risposta

23

Sì (unless your false is not 0). Il metodo predefinito +alloc/+allocWithZone: azzererà automaticamente tutti gli ivars.

Da https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW17

  • Inizializza tutte le altre variabili di istanza a zero (o al tipo equivalente per lo zero, come nil, NULL e 0.0).
+0

Eccellente! E grazie per il link. – Stabledog

+0

Puoi aggiornare il link che hai lì per il metodo + alloc in questa pagina: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference .html – Reuben

+0

@Ruben: Grazie. Aggiornato su un link di lavoro. – kennytm

4

Vale anche la pena notare è che se si sta facendo Objective-C++ oggetti, C++ che sono ivars di oggetti Objective-C non sono initalized: i loro costruttori non sono chiamati per impostazione predefinita.

+0

Oh, è abbastanza importante sapere! Quindi cosa fai, un gruppo di operatori di placement new()? – Stabledog

+0

In realtà mi sbagliavo: per impostazione predefinita, vengono chiamati i costruttori. C'è un'impostazione di build per controllarlo, è objc-call-cxx-cdtors. Se lo lasciate selezionato, verranno chiamati i "default" (ad esempio quelli senza argomento). Maggiori dettagli sul manuale di gcc: http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html (In alternativa, è possibile utilizzare i puntatori e chiamare new() manualmente) –