如何在[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];
}
答案 0 :(得分: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
这意味着您正在从类方法访问实例方法,这是不允许的。
答案 1 :(得分:0)
我认为您不能在另一个Instance
方法中使用此Class
方法。
如果您想做一些延迟操作,请尝试使用NSTimer timerWithTimeInterval:target:selector:userInfo:repeats:
。