"在objective-c上下文中,在非成员函数中使用'this'无效?

Zer*_*can 2 objective-c this self ios

使用Xcode.

在这段代码中(func在接口中声明),告诉subj错误,站在带有'self'的字符串上.

+ (void) run: (Action) action after: (int) seconds 
{
    [self run:action after:seconds repeat:NO];
}
Run Code Online (Sandbox Code Playgroud)

什么......?

Jam*_*ter 7

self是一个实例变量,用于引用当前对象的实例.

您试图在没有意义的类级方法+(void)...中使用它self.尝试使用共享实例,或将有问题的类的实例传递给该方法.

+ (void) run:(Action)action on:(MyClass*) instance after:(int) seconds
{ 
    [instance run:action after:seconds repeat:NO];
}
Run Code Online (Sandbox Code Playgroud)

编辑

我的评论者指出,self在班级语境中确实有意义,但它指的是班级本身.这意味着你试图调用一个如下所示的方法:

 [MyClass run:action after:seconds repeat:NO];
Run Code Online (Sandbox Code Playgroud)

你应该在哪里:

 [myClassInstance run:action after:seconds repeat:NO];
Run Code Online (Sandbox Code Playgroud)

  • 我相信自我确实在课堂方法中有意义.它指的是调用该方法的类.有关详细信息,请参阅http://stackoverflow.com/questions/6325453/why-is-self-allowed-in-static-context-in-objective-c. (4认同)
  • @James不太好!类方法中的`self`代表Class对象,确实可以使用. (3认同)