如何在+(void)classMethod中使用[self performSelector:withObject:afterDelay:]方法

时间:2012-08-20 02:09:16

标签: iphone ios cocos2d-iphone

如何在[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];
}

2 个答案:

答案 0 :(得分:1)

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

<强>视觉

enter image description here

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

在你的情况下,

+(void)classMethod
{

}

是一种类方法,但是,

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

NSObject的实例方法,这就是您无法通过类方法调用的原因。

Apple Doc

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

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

答案 1 :(得分:0)

我认为您不能在另一个Instance方法中使用此Class方法。

如果您想做一些延迟操作,请尝试使用NSTimer timerWithTimeInterval:target:selector:userInfo:repeats: