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/