-2

我有个问题。如果有人可以帮助我,那就太好了。我有一个类 myObject 和一个类 HelloWorldLayer。在 HelloWorld 中,我想在 myObjectX 上调用方法 doSomething。

但随着

[myObjectX doSomething];

它不想工作。

有人知道这样做的解决方案吗?

我如何必须在 myObjectX 上调用 doSomething 而不更改剩余代码。

非常感谢。

myObject.h
@interface myObject : CCSprite {
}

-(void)doSomething;
@end

myObject.m
@implementation myObject

-(void)doSomething
{
    NSLog(@"test");
}
@end

HelloWorldLayer.h
@interface HelloWorldLayer : CCLayerGKLeaderboardViewControllerDelegate>
{
    CCSprite *myObjectX;
}
-(void)test;
@end

HelloWorldLayer.m
@implementation HelloWorldLayer
-(void)test
{
    myObjectX = [[myObject alloc]init];
    [myObjectX doSomething];
}
@end
4

2 回答 2

1

H

@interface HelloWorldLayer:CCLayer
{
    myObject *myObjectX;
}

比你可以调用你的 myObjectX 方法。

于 2013-05-16T13:52:44.673 回答
0

改变

myObject *myObjectX = [[myObject1 alloc]init];

进入

myObject1 *myObjectX = [[myObject1 alloc]init];

因为-(void)doSomething;在你的myObject1myObject2类中声明。

这正是消息所说的:你-(void)doSomething;myObject班级没有。

或者您可以添加:

@interface myObject:CCSprite
{

}
-(void)doSomething;    // Add here and implement in your .m
@end

希望这可以帮助。

编辑 :

你做错了:

@interface HelloWorldLayer : CCLayerGKLeaderboardViewControllerDelegate>
{
    CCSprite *myObjectX;
}
-(void)test;
@end

用这个纠正它:

@interface HelloWorldLayer : myObject <CCLayerGKLeaderboardViewControllerDelegate>
{
}
@end

先验,你可以使用doSomethinginHelloWorldLayer因为它继承自myObject.

于 2013-05-16T14:54:58.447 回答