Existe-t-il un type de données primitif qu'il est sûr de ne pas initialiser?Dois-je initialiser TOUS les types de données primitifs à des valeurs 'sûres' dans Obj-C?
Qu'en est-il des structures comme les CGPoints ou les NSRects?
Existe-t-il un type de données primitif qu'il est sûr de ne pas initialiser?Dois-je initialiser TOUS les types de données primitifs à des valeurs 'sûres' dans Obj-C?
Qu'en est-il des structures comme les CGPoints ou les NSRects?
Cela dépend de l'endroit où la variable est stockée. Le langage spécifie que tous les objets sont mis à zéro sur alloc, ce qui signifie que tous les ivars seront remplis. Pour tout type primitif où le backing store est 0, il est parfaitement sûr. Par exemple:
@interface LGDemo : NSObject {
CGPoint point;
NSRect rect;
}
@end
Il est tout à fait sûr de ne pas explicitement le point d'initialisation ou rect, après que l'objet est qu'ils alloc'ed seront {0.0, 0.0} et {0,0, 0,0, 0,0, 0,0} respectivement.
qu'en est-il des primitives locales? Quels types sont sûrs, aucun? – willc2
Vous voulez dire sur la pile? Il n'est pas garanti que les variables de pile soient remplies de zéro, vous devez les initialiser manuellement. –
Juste pour être clair, il ne s'agit pas des types, mais de l'endroit où ils sont stockés. Type n'a rien à voir avec ça, sauf dans la mesure où 0 mémoire sauvegardée peut ou non être une valeur par défaut sensée. –
Que voulez-vous dire par "sûr"? Sûr de faire quoi avec? –
sûr d'incrémenter ou d'imprimer avec NSLog() – willc2