首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[NSObject描述]

[NSObject描述]
EN

Stack Overflow用户
提问于 2012-08-08 04:11:02
回答 5查看 10.1K关注 0票数 5

您好,您能给我一个这个方法用法的例子吗?

代码语言:javascript
复制
+(NSString *)description

我应该对NSObject (任何类型的对象)或NSString的实例使用description吗?

或者我可以不使用实例,直接使用NSObject (任何类型的对象)或NSString?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-08 04:14:09

实例说明提供了有关您创建的特定实例的信息。

- (NSString *)描述;

代码语言:javascript
复制
NSString *string = [NSString alloc] initwithString:@"aString"]];
[string description];

提供有关此实例的信息(内存中的位置等)

在另一边:

+ (NSString *)描述;

代码语言:javascript
复制
[NSString description];

为您提供有关类NSString的信息。

相同的规则适用于所有NSObject子类和其他符合NSObject协议的类,如NSArrayNSDictionary *NSProxy*等

票数 18
EN

Stack Overflow用户

发布于 2012-08-08 04:23:37

假设我们有:

代码语言:javascript
复制
@interface randomObject : NSObject
{
    NSString  *yourString;
}

在某个地方:

代码语言:javascript
复制
yourString = [[NSString alloc] initWithString:@"random text"];

然后我们可以像这样覆盖randomObject ...

代码语言:javascript
复制
- (NSString *)description
{
  return [NSString stringWithFormat:@"%@", yourString];
}

完成此操作后,我们可以使用NSObject调用NSLog:

代码语言:javascript
复制
-(void)viewDidLoad {
    randomObject *ourObj;

    ourObj = [[randomObject alloc] init];

    NSLog(@"%@", ourObj); //  this will output "random text"
}
票数 4
EN

Stack Overflow用户

发布于 2012-08-08 04:23:58

您似乎主要对类方法和实例方法之间的区别感到困惑。

NSObject声明了类方法+[NSObject description],正如文档所说,它“返回一个表示接收类内容的字符串。”如果将消息description发送到类对象,如下所示:

代码语言:javascript
复制
[NSArray description];
[NSNumber description];
[[someObject class] description];

此方法将被调用,您将获得该类用于描述其自身的字符串。

另一方面,NSObject 声明了一个必需的实例方法-[id description],该方法将返回“一个描述接收方内容的字符串”。当你把它发送给一个实例时,你会得到一个代表它的字符串:

代码语言:javascript
复制
NSNumber * n = [NSNumber numberWithInt:10];
[n description];
NSArray * arr = [NSArray arrayWithObjects:@"Lemon", @"curry", @"?", nil];
[arr description];
NSDicitonary * d = [NSDictionary dictionaryWithObject:arr forKey:n];
[d description]; 

NSObject的所有子类都继承了这两个方法,它们可以像其他方法一样被覆盖。例如,请注意,NSDictionaryNSArray对自身进行格式化,并将description发送到它们包含的对象。

还应该注意,在使用NSLog()时,%@格式说明符会将description发送给它的参数(无论是类对象还是实例)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11853358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档