...we应该做的事情:if ([response isKindOfClass:[NSHTTPURLResponse self]])
这和做if ([response isKindOfClass:[NSHTTPURLResponse class]])一样吗?
发布于 2013-01-12 02:50:17
好的,Martin R的评论是对的,它是一样的。对于任何类,我可以使用[ClassName self]或[ClassName class]来获得相同的结果。我可以覆盖这两个类:
+ (Class)class
{
return [super class];
}
+ (id)self
{
return [super self];
}事实上,所有的NSObject实例方法(-)都变成了类的类方法(+)。
关于操纵“自我”的利弊:
的类
关于操纵“自我”的注意事项:
发布于 2013-01-12 03:18:58
-[NSObject self]和+[NSObject class]都做同样的事情:返回被调用的对象。没有类实现+self类方法,因此当您在类对象上调用self时,它会调用-[NSObject self]方法,因为元类最终继承自NSObject (这意味着NSObject的所有实例方法都可用于类对象,除非被同名的类方法覆盖)。
我希望Cocoa库的编写者永远不会有+class,我们只会一直使用[ClassName self]而不是[ClassName class],因为现在人们总是将+[NSObject class]与-[NSObject class]混淆(这两种方法做的事情非常不同-- +[NSObject class]返回被调用的(类)对象,而-[NSObject class]返回被调用的对象的类)。
https://stackoverflow.com/questions/14275381
复制相似问题