Sprite kit 如何解决我的SpriteKit游戏类中的循环依赖关系

Sprite kit 如何解决我的SpriteKit游戏类中的循环依赖关系,sprite-kit,cyclic-dependency,Sprite Kit,Cyclic Dependency,我有: 1.类扩展SKSCene的游戏场景: #import <SpriteKit/SpriteKit.h> #import "GameLogic.h" #import "Hero.h" @interface GameScene : SKScene -(void) addHeroMovementLineSegmentTo:(CGPoint)newTrajectoryPoint; @property (nonatomic) Hero * hero; #导入 #导入“

我有:
1.类扩展SKSCene的游戏场景:

#import <SpriteKit/SpriteKit.h>  
#import "GameLogic.h"  
#import "Hero.h"  

@interface GameScene : SKScene

-(void) addHeroMovementLineSegmentTo:(CGPoint)newTrajectoryPoint;

@property (nonatomic) Hero * hero;
#导入
#导入“GameLogic.h”
#导入“Hero.h”
@界面游戏场景:SKScene
-(void)将MovementLineSegmentTo添加到:(CGPoint)newTrajectoryPoint;
@属性(非原子)英雄*英雄;
以及扩展SKSpriteNode的类英雄:

#import <SpriteKit/SpriteKit.h>  
#import "GameScene.h"  

@interface Hero : SKSpriteNode  

-(void) initHero:(CGPoint) position onScene:(SKScene *) currentScene;  

@property (nonatomic) GameScene * currentScene;  
#导入
#导入“GameSecene.h”
@界面英雄:SKSpriteNode
-(void)initHero:(CGPoint)在场景上的位置:(SKScene*)当前场景;
@属性(非原子)游戏场景*当前场景;

我希望这两个类(英雄和游戏场景)相互了解,并使用彼此的方法(更不用说XCode为两个类编写方法的自动完成功能了。不知何故,这在XCode SpriteKit中是不允许的,因为循环依赖性,我可以理解,但希望它不存在。有什么建议吗?

我知道回答这个问题有点晚,但在接口中使用前向声明ation为我解决了这个问题。

您应该发布一段代码。在没有看到它的情况下,我要提到的是,处理所有对象属性和函数的一种方法是将SKSpriteNode作为Hero类的属性,而不是将Hero作为sprite节点的子类。这样,Hero类就可以包含各种内容,您甚至可以在英雄和场景之间设置代理模式。或者使用通知并使用游戏的主视图控制器(包含场景的主视图控制器)调用两个对象中的函数。已更新。我收到以下错误:此行中未知类型名称GameSecene:@property(非原子)GameSecene*currentScene;谢谢。你的回答会很好地解决这个问题。我想知道这是否可能以某种方式避免,但具有相同的结构(两个类中的属性可以相互指向)。(并且不必更改我的整个游戏结构)可以解决周期性依赖关系的问题。无论如何,这里的设计很糟糕,您应该像前面指出的那样使用委派。代码中的另一个问题(假设依赖关系已解决)你将创建一个这样的强引用循环,因为英雄对游戏场景有强引用,而游戏场景对英雄有强引用。这很好,但我仍然应该有其他方法来解决这个问题。