[英]How to cancel a method registered with [performSelector: withObject: afterDelay:]?
[英]How can I use [self performSelector: withObject: afterDelay:] method in +(void)classMethod
如何在+(void)classMethod
使用[self performSelector: withObject: afterDelay:]
方法?
我在下面定義了一個精靈:
+(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];
}
從技術上講, 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
這意味着您正在從類方法訪問實例方法,這是不允許的。
我認為您不能在另一個Class
方法中使用此Instance
方法。
如果要執行一些延遲操作,請嘗試使用NSTimer timerWithTimeInterval:target:selector:userInfo:repeats:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.