2010-02-15 28 views
0

夥計們,我有兩個類AppController和Robot。Objective-C'Robot'可能不會響應'-nothingToDo'

AppController.h 
#import <Cocoa/Cocoa.h> 
#import "Robot.h" 

@interface AppController : NSObject { 

Robot *myRobot; 

} 
- (IBAction)initPort:(id)sender; 


AppController.m 

#import "AppController.h" 
@implementation AppController 


- (IBAction)initPort:(id)sender 
{ 
[myRobot nothingDo]; 
} 
@end 

Robot.h 

#import <Cocoa/Cocoa.h> 
@interface Robot : NSObject { 

} 
-(void)nothingToDo:(id)sender; 


Robot.m 
#import "Robot.h" 

@implementation Robot 

-(void)nothingToDo:(id)sender 
{ 
    NSLog(@"bla-bla-bla"); 
} 

當我試圖運行我看到「機器人」可能不響應「-nothingToDo」和 - 在不進行(無效)nothingToDo。怎麼了?

回答

3

Objective-C方法中的冒號非常重要。嘗試

[myRobot nothingToDo:sender]; 

改爲。

+0

是的,它有助於:))))但是,我之前並不知道結腸癌。謝謝 – moldov

-1

編譯AppController.m時,編譯器不知道私有的-nothingToDo方法,因爲它不出現在Robot.h中。這就是發出警告的原因。

其實這個方法不存在,只有-nothingToDo:(注意:意思是需要一個參數)。這就是爲什麼該方法沒有被調用。

+0

降低投票的論據? – mouviciel

+0

由於該方法在頭文件中正確聲明,真正的問題是發送方法'nothingDo'而不是'nothignToDo:',這是一種錯誤的方法名稱並且缺少sender參數的情況。警告是真實的,機器人不響應這些消息。 – Jasarien

+0

讓我們把這個錯誤留在討論之外,很容易解決。無論如何,'-nothingToDo'沒有出現在頭文件中,只有'-nothingToDo:' – mouviciel

0

首先確保myRobot引用有效的Robot對象。

2

您發送的郵件nothingDo,而不是nothingToDo(可能只是一個錯字)。

此外,您忘記了sender參數。

試試這個:

- (IBAction)initPort:(id)sender 
{ 
    [myRobot nothingToDo:sender]; 
} 

這應該工作,提供myRobot是正確的分配和初始化Robot對象。

+0

是的,它有助於:))))但是,我以前不知道結腸癌。謝謝 – moldov

相關問題