首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >className方法?

className方法?
EN

Stack Overflow用户
提问于 2010-06-08 00:17:31
回答 3查看 4.7K关注 0票数 5

我刚刚从2010年1月在网上观看了斯坦福大学的iPhone讲座,我注意到来自苹果的家伙一直在提到使用"className“获取对象的类名。

代码语言:javascript
复制
NSArray *myArray = [NSArray arrayWithObjects:@"ONE", @"TWO", nil];
NSLog(@"I am an %@ and have %d items", [myArray className], [myArray count]);

然而,我不能让它工作,我能想到的最接近的方法是使用类,className是不是错了,它被移除了吗,只是好奇?

代码语言:javascript
复制
NSArray *myArray = [NSArray arrayWithObjects:@"ONE", @"TWO", nil];
NSLog(@"I am an %@ and have %d items", [myArray class], [myArray count]);

加里

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-08 00:23:20

className方法仅在Mac上可用,在iPhoneOS上不可用。它通常用于脚本支持,这就是iPhone上不存在它的原因。您可以使用类似以下内容:

代码语言:javascript
复制
NSString* className = NSStringFromClass([myArray class]);

如果您想要存储字符串。严格来说,NSStringFromClass()并不是必需的,但您可能应该使用它,因为它是一种“有文档”的方式。

票数 13
EN

Stack Overflow用户

发布于 2010-06-08 00:25:08

className方法只存在于Mac上。但是,通过NSObject类别为iPhone实现起来相当容易:

代码语言:javascript
复制
//NSObject+ClassName.h
@interface NSObject (ClassName)

- (NSString *) className;

@end

//NSObject+ClassName.m
@implementation NSObject (ClassName)

- (NSString *) className {
  return NSStringFromClass([self class]);
}

@end

现在,应用程序中的每个NSObject (和子类)都将有一个className方法。

票数 3
EN

Stack Overflow用户

发布于 2010-06-08 00:25:18

代码语言:javascript
复制
NSStringFromClass( [someObject class] );

以及Objective-C2.0之前的版本

代码语言:javascript
复制
someObject->isa.name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2991190

复制
相关文章

相似问题

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