2011-02-14 42 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文件中。