加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Objective-C中引用一个指针

发布时间:2020-12-16 05:21:58 所属栏目:百科 来源:网络整理
导读:任何人都可以解释一下,为什么我们不会将一个指针“now”取消引用到NSDate实例,当我们实际想要从这个实例获取数据而不是地址时. NSDate *now = [NSDate date];NSLog(@"The date is %@",now); 我很困惑的事实是,以前的Aaron Hillegass“Objective-C编程”书中
任何人都可以解释一下,为什么我们不会将一个指针“now”取消引用到NSDate实例,当我们实际想要从这个实例获取数据而不是地址时.
NSDate *now = [NSDate date];
NSLog(@"The date is %@",now);

我很困惑的事实是,以前的Aaron Hillegass“Objective-C编程”书中使用的NSLog的例子是:

NSDate *now = [NSDate date];
NSLog(@"The new date lives at %p",now);

这段代码很清楚.我们想要地址,我们得到它.但是,当我们继续使用指针时,如何通过更改说明符来获取实际日期?

解决方法

“实际日期”是一个概念. “数据”是一系列字节.他们是不一样的事情.

如果你使用好的老式的C风格的字符串和printf,你可以这样写:

char *name = "Zakatov";
printf("My name is %s",name);

这是因为printf函数需要这个东西的地址来处理它.你没有传递“实际数据”,而是传递地址,因为传递地址是更有效率的.将某些东西传递给函数意味着将其值复制到存储器的堆栈区域,并且复制地址(32或64位)的速度要比复制整个字符串(几个字节,也可以是KB或MB)的速度更快.

所以在Objective-C中,我们一直处理对象的指针,因为指针是最简单的方法来引用它们.需要取消引用指针(查看字节)的唯一需要是运行时系统,例如当将消息选择器转换为函数地址以执行它们时.您的代码只将指针视为指针,并将其传递,而不用担心另一端的数据的精确布局(字节).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读