簡體   English   中英

我如何在+(void)classMethod中使用[self 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM