id是对象的类型;例如,类型可能是NSArray
*或NSString
*。
类可以是NSArray
*或NSString
*或其他对象。
我可以像使用
一样使用它们- (void)wantWriteAction:(id)sender {
}
- (void)wantWriteAction:(Class)sender {
}
我想知道它们之间的区别。在什么条件下不能使用id?什么条件不能使用Class?
答案 0 :(得分:1)
id
表示任何类的实例。 Class
代表任何类 - 不是实例,而是类本身。
因此id
可以是NSString
或NSArray
的特定实例。您可以在其上调用实例方法 - 在文档中显示-
的方法,例如-length
或-stringByAppendingFormat
。如果id
为NSString
,则其值可能为@"foo"
。
Class
可以是NSString
类或NSArray
类。您可以在其上调用类方法 - 在文档中显示为+
的方法,如+stringWithFormat
。如果Class
为NSString
(请注意,不是 NSString
,而是 NSString
类,那么它有没有字符串值,因为它不是字符串。这是一堂课。