2011-05-17 39 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