2010-10-12 169 views
0

我有一個名爲「HelloWorld.m」的類和另一個名爲「Person.m」的類。我在HelloWorld.m類中聲明Person實例如下:從另一個類調用Objective C實例方法

Person *person; 

現在,當用戶觸摸我火了以下方法屏幕:

[person foo]; 

但我得到的錯誤說無效的選擇發送。

注意:Person類繼承自CCSprite類。我究竟做錯了什麼?

Person.h:

-(void) foo; 

Person.m:

-(void) foo 
{ 
    NSLog(@"foo called!"); 
} 

更新1:在HelloWorld.h和HelloWorld.m我已經declarated人的財產。這是對person.foo方法的調用。

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    [self.person foo]; 
} 

HelloWorld.h:

// When you import this file, you import all the cocos2d classes 
#import "cocos2d.h" 
#import "Person.h" 

// Importing Chipmunk headers 
#import "chipmunk.h" 

// HelloWorld Layer 
@interface HelloWorld : CCLayer 
{ 
    cpSpace *space; 
    Person *person; 

} 

// returns a Scene that contains the HelloWorld as the only child 
+(id) scene; 
-(void) step: (ccTime) dt; 
-(void) addNewSpriteX:(float)x y:(float)y; 

@property (nonatomic,retain) Person *person; 


@end 

回答

2

你進口人頭部到了HelloWorld文件的頂部?

#import "Person.h" 

您是否初始化了人員指針?

person = [[Person alloc] init]; 

Person類是否有foo方法?

+0

是的,我導入Person.h。我初始化了init方法中的人員,並且是的Person有一個foo方法。 – azamsharp 2010-10-12 02:58:30

+0

似乎與CCSprite有關。既然它說[CCSprite foo]無法識別的選擇器發送到... – azamsharp 2010-10-12 03:07:32

+0

我們可以看到你打電話給這個人的代碼嗎? – 2010-10-12 03:11:11

相關問題