Sont ints toujours initialisé à 0?
Est-il sûr de compter sur int
s toujours être initialisé à 0 en Objective-C?
Plus précisément, lorsqu'un objet avec int
ivars a été nouvellement instancié, il est sûr de supposer que son ivars ont de la valeur 0?
Vous devez vous connecter pour publier un commentaire.
Oui, classe les variables d'instance sont toujours initialisé à 0 (ou
nil
,NULL
, oufalse
, selon le type de données exactes). Voir la Objective-C 2.0 Langage De Programmation:MODIFIER 2013-05-08
Apple semble avoir retiré le document ci-dessus (maintenant lié à La Wayback Machine). L' (actuellement) document actif La Programmation Objective-C contient une semblable citation:
Cependant, c'est seulement vrai pour les variables d'instance d'une classe; c'est également vrai pour les POD types déclaré à la portée globale:
À une exception près, il est pas vrai pour les variables locales, ou pour les données allouées avec
malloc()
ourealloc()
; c'est vrai pourcalloc()
, depuiscalloc()
explicitement des zéros de la mémoire, qu'il alloue.La seule exception est que lorsque l'option Automatique de Comptage de Référence (ARC) est activé, les pointeurs de pile à Objective-C objets sont implicitement initialisé à
nil
; cependant, il est toujours une bonne pratique pour initialiser explicitement ànil
. À partir de la La transition à l'ARC Notes de Version:En C++ (et des objets en C++ utilisé en Objective-C++), classe les variables d'instance sont également pas initialisé à zéro. Vous devez explicitement les initialiser dans votre constructeur(s).
id
sont initialisés à zéro.NSUInteger
s /CGFloat
s ?int
,NSUInteger
,CGFloat
,float
,bool
,BOOL
,char
, etc.) sont tous initialisés à 0 représentée au sein de ces types.Je ne pense pas que vous devez considérer toutes les valeurs d'initialisation. Si vous êtes à la construction de la logique d'un "0" de la valeur, vous devez le régler pour être sûr.
Oui, en C les variables globales sont initialisées à zéro.
En Objective-C, même au niveau local vars sont initialisées à zéro.
Vous pouvez compter sur elle.