标识符ID和类之间有什么不同?

时间:2013-12-16 06:06:31

标签: ios objective-c

id是对象的类型;例如,类型可能是NSArray *或NSString *。 类可以是NSArray *或NSString *或其他对象。

我可以像使用

一样使用它们
- (void)wantWriteAction:(id)sender {
}

- (void)wantWriteAction:(Class)sender {
}

我想知道它们之间的区别。在什么条件下不能使用id?什么条件不能使用Class?

1 个答案:

答案 0 :(得分:1)

id表示任何类的实例。 Class代表任何类 - 不是实例,而是类本身。

因此id可以是NSStringNSArray的特定实例。您可以在其上调用实例方法 - 在文档中显示-的方法,例如-length-stringByAppendingFormat。如果idNSString,则其值可能为@"foo"

Class可以是NSString类或NSArray类。您可以在其上调用类方法 - 在文档中显示为+的方法,如+stringWithFormat。如果ClassNSString(请注意,不是 NSString,而是 NSString类,那么它有没有字符串值,因为它不是字符串。这是一堂课。