Objective-C - 无法从另一个类访问Object

时间:2013-05-16 13:40:40

标签: objective-c cocos2d-iphone

我有一个问题。如果有人可以帮助我会很棒。 我有一个类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

2 个答案:

答案 0 :(得分:1)

ħ

@interface HelloWorldLayer:CCLayer
{
    myObject *myObjectX;
}

您可以调用myObjectX方法。

答案 1 :(得分:0)

更改

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

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

因为在-(void)doSomething;myObject1类中声明了myObject2

这正是消息所说的内容:-(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

A Priori ,您可以在doSomething中使用HelloWorldLayer,因为它继承自myObject