我可以使用两个代理:类中的delegateS,类中的delegateS吗?

时间:2012-06-24 22:17:06

标签: objective-c delegates protocols

我在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...

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

是;您可以像预先声明类一样预先声明协议,因此将它放在ScoreLayer类的顶部:

@protocol PowerUpDelegate;
相关问题