2010-03-28 15 views

Respuesta

23

Sí (unless your false is not 0). El método predeterminado +alloc/+allocWithZone: pondrá a cero automáticamente todos los ivars.

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

  • Se inicializa todas las otras variables de instancia a cero (o al tipo equivalente para el cero, tal como nil, NULL, y 0.0).
+0

¡Excelente! Y gracias por el enlace. – Stabledog

+0

Es posible que desee actualizar el enlace que tiene allí al método + alloc en esta página: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference .html – Reuben

+0

@Reuben: Gracias. Actualizado a un enlace de trabajo. – kennytm

4

También digno de mención es que si estás haciendo Objective-C++ objetos, C++ que son Ivars de objetos Objective-C no están initalized: sus constructores no son llamados por defecto.

+0

¡Oh, eso es muy importante saber! Entonces, ¿qué haces, un montón de nuevos operadores de colocación()? – Stabledog

+0

En realidad estaba equivocado: por defecto, se llaman los constructores. Hay una configuración de compilación para controlar eso, es objc-call-cxx-cdtors. Si lo dejas marcado, se llamarán los códigos "predeterminados" (por ejemplo, los que no tienen argumento). Más detalles sobre el manual de gcc: http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html (O puede usar punteros y llamar a new() manualmente) –

Cuestiones relacionadas