int i = 17;
int *addressOfI = &i;
printf("the int stored at addressOfI is %d\n", *addressOfI);

问题是:如果我可以使用*运算符获取存储在addressOfI中的数据,为什么它不适用于NSString类型?如下所示:
NSString *string = @"Hello world!"
printf("the NSString stored at string is %@\n", *string);

最佳答案

为什么不适用于NSString类型?

因为NSString是Objective-C对象,而不是原始类型。 NSString *指针实际上指向提供对象系统框架的struct objc_object。您可能可以在该框架中“看到”一些原始类型(即objc_object的成员),但是对于普通开发人员来说,这应该是一个黑匣子。

您的第二段代码崩溃的实际原因是,%@格式说明符希望对作为参数传入的对象调用description方法,并且您已经取消引用了该对象指针,因此它不再是有效的对象指针。

关于ios - 使用*运算符获取存储在地址中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38345713/

10-12 00:15
查看更多