Oc 类方法为什么不能用self 求解?

Oc 类方法为什么不能用self 求解?

阅读 4.1k
2 个回答

当然可以用self了。如下代码:

@implementation UIView (Utils)
+ (void) someStaicMethod
{
    [self animateWithDuration:0.1 animations:nil];
}
@end

类方法中self指类本身。上述例子中selfUIView

self指代的是对象本身,对象是类的实例,类 ≠ 对象

一个类可以生出很多对象,如果在类方法中使用self,是想指代哪一个对象呢?


折叠我吧,oc里确实可以用self指代class本身,并且是多态的。

+ (id)new
{
  return [[self alloc] init];
}

NSArray * arr1 = [NSArray new];  // self 指代 NSArray
NSMutableArray * arr2 = [NSMutableArray new]; // self指代 NSMutableArray
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进