NSDate *now = [NSDate date]; NSLog(@"This NSDate object lives at %p",now); NSLog(@"The date is %@",now);
好的,从这个代码,我知道现在是一个指向NSDate对象的指针,但是在第3行的代码中,你如何取消引用没有星号的指针?为什么我们不这样做这样的代码在第三行:
NSLog(@"The date is %@",*now);@H_502_8@
解决方法
%@将一个指向一个对象的指针发送给它,该消息返回一个NSString指针. (您可以覆盖类中的描述以自定义字符串.)
在Objective-C中,您可以使用[objectPointer message]语法通过指针向对象发送消息.所以,使用你的NSDate示例,你可以做:
NSDate * now = [NSDate date]; NSString * dateDescription = [now description]; // Note that "now" points to an object and this line sends it the "description" message NSLog(dateDescription);
从NSObject继承的类的任何实例都可以发送描述消息,因此可以将指向它的指针传递给一个%@ format参数.
(技术说明:如果对象支持descriptionWithLocale:message,则会被发送).
@H_502_8@ @H_502_8@ 原文链接:https://www.f2er.com/iOS/329905.html