根据Apple的说法...... https://developer.apple.com/library/content/samplecode/URLCache/Listings/Classes_URLCacheConnection_m.html
......我们应该这样做:
if ([response isKindOfClass:[NSHTTPURLResponse self]])
与if ([response isKindOfClass:[NSHTTPURLResponse class]])
一样吗?
答案 0 :(得分:0)
好的, Martin R 的评论是对的,它是一样的。
对于任何课程,我都可以[ClassName self]
或[ClassName class]
获得相同的结果。
我可以覆盖它们两个:
+ (Class)class
{
return [super class];
}
+ (id)self
{
return [super self];
}
实际上,所有NSObject实例方法( - )都成为Class的类方法(+)。
关于操纵'自我'的专业:
关于操纵'自我'的决定:
答案 1 :(得分:0)
-[NSObject self]
和+[NSObject class]
都做同样的事情:返回调用它的对象。没有类实现+self
类方法,因此当您在类对象上调用self
时,它会调用-[NSObject self]
方法,因为元类最终从NSObject
继承(意味着所有NSObject
的实例方法可用于类对象,除非被同名的类方法覆盖。)
我希望Cocoa图书馆作者从未有+class
,我们只会使用[ClassName self]
代替[ClassName class]
,因为现在人们总是把+[NSObject class]
与-[NSObject class]
混为一谈+[NSObject class]
(它做了很多不同的事情 - -[NSObject class]
返回它被调用的(类)对象,而{{1}}返回它被调用的对象的类。)