Maison > Questions et réponses > le corps du texte
NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?
怪我咯2017-04-21 11:19:58
Je comprends votre question, mais la question que vous avez posée n'est pas tout à fait correcte. Il n'y a pas de concept d'objet au moment de la compilation.
Tout d'abord, la déclaration NSString *testObject
indique au compilateur que testObject
est un pointeur vers un objet Objective-C. Car quel que soit le type d'objet vers lequel il pointe, l'espace mémoire occupé par un pointeur est fixe, donc s'il est déclaré comme n'importe quel type d'objet, il n'y aura aucune différence dans le code exécutable final généré. La définition de NSString
ici indique simplement au compilateur de vérifier testObject
comme NSString
Si une méthode non NSString
est appelée ultérieurement, un avertissement sera généré.
Ensuite, vous créez un objet NSData
et enregistrez l'adresse mémoire de cet objet dans testObject
. Ensuite, au moment de l'exécution, l'espace mémoire pointé par testObject
est un objet NSData
. Vous pouvez utiliser testObject
comme objet NSData
.