当前位置:  开发笔记 > 编程语言 > 正文

Obj C - 理解指针

如何解决《ObjC-理解指针》经验,为你挑选了2个好方法。

我正在理解目标C中的指针.他们的行为与我根据各种C教程假设的行为不同.

例:

// Define Name and ID
NSString *processName = [[NSProcessInfo processInfo] processName];
NSNumber *processID = [NSNumber numberWithInt:[[NSProcessInfo processInfo] processIdentifier]];

// Print Name and ID
NSLog(@"Process Name: %@  Process Identifier: %@", processName, processID);

据我了解,processName是一个指向NSString类型对象的指针.processID是指向NSNumber类型的对象的指针.当在NSLog()中调用它们时,它们的名称前面没有星号,因此应该返回指针值.为什么Obj C中没有'地址'字符?为什么这段代码有效?

感谢您的时间.



1> dvenema..:

目标c中的对象表示为包含所有对象数据的c结构的指针.如果对象是一个实际的结构(而不​​是指向一个的指针),那么将对象作为方法参数传递效率要低得多.所以一旦你初始化一个对象:

NSString *aString = /* initial value */;

你几乎总是只使用指针aString,而不是取消引用它(即*aString).

NSLog()函数中的%@标记需要指针类型,并将调用该对象上的description方法以确定要输出的值.在NSString对象上调用description方法时,它返回接收方,因此%@标记将被输出中字符串的内容替换.



2> Ashley Clark..:

%@您的格式字符串告诉NSLog调用-description相关的对象,并使用该字符串的显示值.如果你想要你应该使用的指针的地址%x%qx64位.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有