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.
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 quetestObject
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 deNSString
ici indique simplement au compilateur de vérifiertestObject
commeNSString
Si une méthode nonNSString
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 danstestObject
. Ensuite, au moment de l'exécution, l'espace mémoire pointé partestObject
est un objetNSData
. Vous pouvez utilisertestObject
comme objetNSData
.