0

我在 HelloWorldLayer 中有我的代码,我正在使用委托来更改 ScoreLayer 中的分数,并且我想从 ScoreLayer 向 HelloWorldLayer发送一条消息,以便使用新图像更改 ui。

是否可以在每个班级中创建一个代表(在 ScoreLayer 中创建一个 HelloW... 代表,在 HelloW... 中创建一个 ScoreLayer 代表)?类似的东西:

hellolayer.delegate = scoreLayer;
scoreLayer.powerUpDelegate = hellolayer;

?

@class MyClass不起作用:协议未被识别。
"#import "...":其中一个协议无法识别,但我想会有问题,因为 classA 将导入 classB,这将再次导入 classA 等等。

我应该怎么做?这是一些代码:

    //in HelloWorldLayer.h :

#import "ScoreLayer.h"

@protocol PowerUpDelegate
-(void)scalePowerUp;
@end


// HelloWorldLayer
@interface HelloWorldLayer : CCLayer <PowerUpDelegate>
{ … }

@property (nonatomic,retain) id <ScoreDelegate> delegate;




//in ScoreLayer.h :

//@class HelloWorldLayer; -->does not recognize the protocol
#import "HelloWorldLayer.h"

@protocol ScoreDelegate
//...
@end

@interface ScoreLayer : CCLayer <ScoreDelegate>{
    //...
}

@property (nonatomic,retain) id <PowerUpDelegate> powerUpDelegate;//-->cannot find protocol definition...

谢谢

4

2 回答 2

1

我建议使用实现这两种协议的第三个类并使用该类来处理委托方法。

于 2012-06-24T22:21:39.177 回答
1

是的; 你可以像预先声明类一样预先声明协议,所以把它放在你的ScoreLayer类的顶部:

@protocol PowerUpDelegate;
于 2012-06-24T22:23:54.487 回答