objective-c - NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?
迷茫
迷茫 2017-04-21 11:17:58
0
1
372

NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
刘奇

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal