2011-02-14 19 views
1

我收到一些警告,说明某些东西可能不会响应某个函数。Xcode - 某些东西可能不会响应

#import "Lane.h" 
#import "TrafficController.h" 


@implementation Lane 
@synthesize controller; 


-(void)awakeFromNib 
{ 
    [controller registerLane:self]; -- 'TrafficController' may not respond to '-registerlane' 
    srandom(time(NULL)); 
    [self start]; 
} 

-(void)start 
{ 
    long newStartTime = random() % 200; 
    carStartTimer = [NSTimer scheduledTimerWithTimeInterval:newStartTime/1000.0 target:self selector:@selector(startTimerFired:) userInfo:nil repeats:YES]; 
    [carStartTimer retain]; 
} 

-(void)startTimerFired: (NSTimer*)timer 
{ 
    //pick a random number of milliseconds to fire again at 

    long newStartTime = random() % 1500 + 500; 

    [timer setFireDate:[NSDate datewWithTimeIntervalSinceNow:newStartTime/1000.0]]; 
    [controller startCarFromLane:self]; - 'TrafficController' may not respond to '-startCarFromLane' 

    NSLog(@"Starting new car"); 
} 

-(void)stop 
{ 
    [carStartTimer invalidate]; 
    [carStartTimer release]; 
    carStartTimer = nil; 
} 

@end 

这是否意味着这些函数没有在这个或其他头文件中声明?或者这意味着什么?

回答

2

在你TrafficController.h,你有这样一行:

-(void) registerLane: (type) variablename; 

如果你不这样做,你应该有

+0

不,但我的TrafficController.m文件很难。 – Amacoder 2011-02-14 12:25:02

0

做@戴夫说什么,让编译器知道你的方法在你的头文件中。

您还可以通过操作实现文件中方法的顺序来清除该消息。如果编译器已经看到该方法(在这种情况下为-(void)registerLane:),那么稍后调用它时,即使它不在.h文件中,它也不会出现问题。

这样你就可以拥有在.h中没有公布的内部方法,但是你可以在没有编译器警告的情况下在内部调用它们。但是,在大多数情况下,这是一个错误,你可能忘记把它放在.h文件中。