gpt4 book ai didi

objective-c - 无法弄清楚这个动态类型的事情

转载 作者:行者123 更新时间:2023-12-03 16:49:47 24 4
gpt4 key购买 nike

我正在为面试 Cocoa 开发人员的人整理一份面试问题列表。我是一名程序员,但我从未做过 Objective-C。我偶然发现了一个interesting question这涉及动态类型。它应该是基本的,我已经尝试过并编译了它,但我仍然不确定它是如何以及为什么工作的。

问题是

What happens at compile time and runtime when you do the following:

NSString *s = [NSNumber numberWithInt:3];
int i = [s intValue];

在调试器中我得到

i = (int) 3s = (__NSFCNumber*) 0x383 (invalid address)

NSLog(@"%d",i) 的输出为 3NSLog(@"%@",s) 的输出为 3 3

有人可以给我解释一下编译器和运行时系统如何处理所有这些,同时记住我对 Objective-C 和 Cocoa 完全陌生,但对计算机一点也不陌生科学吗?

最佳答案

你的 s 只是一个标准的 C 指针,一个 NSNumber 对象(指向 a 的指针)被分配给它。

NSNumber 以及 NSString 响应 intValue。就是这样。

关于objective-c - 无法弄清楚这个动态类型的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com