2011-05-17 63 views
1

下面的一段代碼拒絕編譯,因爲方法:「FollowPlayer」是具有類級別訪問權限的類方法。我如何正確地讓NSTimer調用+(void)FollowPlayer?來自非類方法的調用類方法

- (void)awakeFromNib{zombie_size=4; timer=[NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(FollowPlayer) userInfo:nil repeats: NO];} 

+ (void)FollowPlayer: NSTimer{} 

回答

1

嘿。你能檢查你所調用的方法是scheduledTimerWithTimeInterval嗎?您的代碼有調用scheduledTimerWithInterval ...缺少Time部分

+0

謝謝!但是,我有錯誤:無法識別的選擇器在執行時發送到類0x100003a58。 – evdude100 2011-05-17 18:47:53

+0

我認爲這可能是因爲您在選擇器名稱後面缺少冒號'@selector(FollowPlayer)'...應該是'@selector(FollowPlayer :)' – 2011-05-17 18:50:09

+0

非常感謝! – evdude100 2011-05-17 18:51:50

2

將目標從'self'更改爲[MyClass類],其中MyClass是您的類的名稱。

+0

將目標更改爲[EntityZombie EntityZombie]用SIGABRT退出我的程序。 – evdude100 2011-05-17 18:14:03

+0

[EntityZombie class] – Roman 2011-05-17 18:18:46

+0

...並且可能還會生成編譯器警告。 '[EntityZombie class]'。 – bbum 2011-05-17 18:19:09

1

你確定它不只是一個語法錯誤嗎?你能做這個嗎?

- (void)awakeFromNib{zombie_size=4; timer=[NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(FollowPlayer:) userInfo:nil repeats: NO];} 
+ (void)FollowPlayer:(id)userInfo { NSLog(@"Timer called with user info %@", userInfo); } 
+0

不,我不能。該程序仍然存在與SIGABRT。 – evdude100 2011-05-17 18:34:52