我在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...
由于
答案 0 :(得分:1)
我建议使用实现两种协议的第三个类,并使用该类来处理委托方法。
答案 1 :(得分:1)
是;您可以像预先声明类一样预先声明协议,因此将它放在ScoreLayer
类的顶部:
@protocol PowerUpDelegate;