main.m
...
-(id) init{
[[Singleton sharedSingleton] set_player:[CCSprite spriteWithFile:@"player.png"]];
...
每次都会引发错误的访问错误。我该如何解决?
Singleton.h
#import <Foundation/Foundation.h>
#imzort "cocos2d.h"
@interface Singleton : NSObject {
NSMutableArray *_enemies;
NSMutableArray *_projectiles;
NSMutableArray *_enemyProjectiles;
NSMutableArray *_enemyProjectilesToDelete;
NSMutableArray *_projectilesToDelete;
CGSize _winSize;
CCSprite *_player;
}
@property (nonatomic, strong) NSMutableArray *_enemies;
@property (nonatomic, strong) NSMutableArray *_projectiles;
@property (nonatomic, strong) NSMutableArray *_enemyProjectiles;
@property (nonatomic, strong) NSMutableArray *_enemyProjectilesToDelete ;
@property (nonatomic, strong) NSMutableArray *_projectilesToDelete;
@property (nonatomic, strong) CCSprite *_player;
@property (nonatomic, assign) CGSize _winSize;
+(Singleton *)sharedSingleton;
@end
Singleton.m
#import "Singleton.h"
@implementation Singleton
@synthesize _enemies,_projectiles,_enemyProjectiles,_enemyProjectilesToDelete,_projectilesToDelete,_winSize, _player;
+(Singleton *)sharedSingleton{
static Singleton *_sharedSingleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedSingleton = [[self alloc] init];
});
return _sharedSingleton;
}
-(id)init{
if(self = [super init]){
_enemies = [[NSMutableArray alloc]init];
_projectiles = [[NSMutableArray alloc]init];
_projectilesToDelete = [[NSMutableArray alloc]init];
_enemyProjectiles = [[NSMutableArray alloc]init];
_enemyProjectilesToDelete = [[NSMutableArray alloc]init];
_winSize = [CCDirector sharedDirector].winSize;
_player = [CCSprite spriteWithFile:@"player.png"];
}
return self;
}
@end
我找不到错误代码,但在CCNode.m中,xcode中断:
[_children makeObjectesPerformSelector:@selector(onEnter)];
出现EXC_BAD_ACCESS错误。
编辑: 更改 @property(非原子,强)CCSprite * _player;
要 @property(nonatomic,assign)CCSprite * _player;
解决了这个问题,但我不知道该解决方案是否真的是一个'单例'解决方案。