0

我怎样才能使用[self performSelector: withObject: afterDelay:]方法+(void)classMethod

我在下面定义了一个精灵:

+(void)classMethod
{
   CCSprite * sprite = [CCSprite spriteWithFile:@"sprite.png"];

  //and hope afterDelay3.0second remove this sprite

   [self performSelector:@select(clean:) withObject:sprite afterDelay:3.0];
}

+(void)clean:(CCSprite *)sprite
{
   [sprite removeFromSuperView];
}
4

2 回答 2

1

从技术上讲self,是指给Object定类的,在您的情况下,您没有创建一个Object,因此您将无法Object从静态方法调用方法。

视觉的

在此处输入图像描述

快速测试表明,如果您的方法被声明为实例级别,那么您将无法从您的类方法中访问它。

在你的情况下,

+(void)classMethod
{

}

是一个类方法,但是,

[self performSelector:@selector(clean:) withObject:sprite afterDelay:3.0];

是的实例方法NSObject,这就是为什么你不能从你的类方法调用。

苹果文档

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

这意味着您正在从类方法访问实例方法,这是不允许的。

于 2012-08-20T02:14:24.803 回答
0

我认为您不能Instance在其他方法中使用此Class方法。

如果你想做一些延迟动作,试试吧NSTimer timerWithTimeInterval:target:selector:userInfo:repeats:

于 2012-08-20T02:16:42.263 回答