刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
解答思路:
这个问题涉及到Objective-C中的对象创建以及类型识别。在编译时,我们需要查看代码的静态类型,而在运行时,我们需要查看对象的动态类型或实际类型。
对于给出的代码 NSString*obj = [[NSData alloc] init];
,我们需要分析其在编译时和运行时分别是什么类型的对象。
最优回答:
编译时:
NSString*obj
声明已经指定了 obj
是一个指向 NSString
类型的指针。因此,在编译时,obj
的类型是 NSString*
。运行时:
[[NSData alloc] init]
实际上创建了一个 NSData
类型的对象。虽然 obj
的指针类型是 NSString*
,但它实际上指向了一个 NSData
对象。这种用法是不安全的,因为它涉及到了类型不匹配的问题。但在运行时,obj
指向的对象实际上是 NSData
类型。alloc
方法分配内存,然后使用 init
方法初始化对象。在这个例子中,虽然使用了 NSString
类型的指针,但实际上通过 NSData
的 alloc/init
创建了一个 NSData
对象。本文链接:请阐述在编译和运行时,对于代码行 NSString* obj = [[NSData alloc] i
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!