委托在xcode 5中工作,但在xcode 6中不起作用

时间:2014-12-13 14:33:28

标签: delegates sprite-kit skscene

@property (unsafe_unretained,nonatomic) id<SceneDelegate> delegate; 

它在xcode 5上运行正常,但它在xcode 6.1上给出了这个错误

Error: Property type 'id<SceneDelegate>' is incompatible with type 'id<SKSceneDelegate>' inherited from 'SKScene'

这是什么意思?

增加:

开始于scene.h

@protocol SceneDelegate <NSObject>
- (void) eventStart;

@end

@interface Scene : SKScene<SKPhysicsContactDelegate>

@property (unsafe_unretained,nonatomic) id<SceneDelegate> delegate;

viewController.h

#import "Scene.h"
#import <AVFoundation/AVFoundation.h>


@interface ViewController : UIViewController<SceneDelegate, AVAudioPlayerDelegate>

viewController.m

scene.delegate = self;

所有这些行包含SceneDelegate。

1 个答案:

答案 0 :(得分:1)

这意味着SKScene already has a property of the same namedelegate

您正在尝试使用不同的协议重新声明该属性:SceneDelegate而不是SKSceneDelegate

因此,要么您想使用delegate属性,在这种情况下您不需要声明该属性,只需将SKSceneDelegate对象分配给delegate属性即可。例如:

self.delegate = mySceneDelegateObject;

如果delegate是您创建的实际协议,则使用其他名称而不是SceneDelegate(并考虑重命名协议,因为它很容易与SKSceneDelegate混淆)。