我已经创建了一个名为DataHolder
的永久数据收集类作为单例。我想将每个级别的所有高分存储在一个数组中,然后在另一个类中访问该数组。我在下面的代码中列出了我试图做的事情。当我记录数组的值时,它似乎随机记录了它的一些属性,例如 CCColor:0x175bf270 。如果我试图将任何东西等同于它,或者它的一些值包含在数组中,那么下次我运行它时,它会在我越过日志之前出错,只是说 Bad Access(代码= 1) ,地址0x10 。有关如何在做同样的事情时避免这种情况的任何建议吗?谢谢!
DataHolder.h
#import <Foundation/Foundation.h>
@interface DataHolder : NSObject
+ (DataHolder *)sharedInstance;
@property (nonatomic, assign) NSMutableArray* levelHighscoresArray;
@end
DataHolder.m
@implementation DataHolder
- (id) init
{
self = [super init];
if (self)
{
self.levelHighscoresArray = [NSMutableArray arrayWithObjects:[NSNumber numberWithInt:10], nil];
NSLog(@"highscores array level 1 %@", _levelHighscoresArray[0]); //works fine
}
return self;
}
+ (DataHolder *)sharedInstance
{
static DataHolder *_sharedInstance = nil;
static dispatch_once_t onceSecurePredicate;
dispatch_once(&onceSecurePredicate,^
{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
OtherClassImAccessingArrayFrom.m
-(void)viewDidLoad{
[super viewDidLoad];
NSLog(@"temphighscores 1 %@", [[DataHolder sharedInstance] levelHighscoresArray]);
//The above gives an error Thread 1:EXC_BAD_ACCESS (code=1, address=0x10)
}
答案 0 :(得分:2)
除了这部分外,它看起来不错。
@property (nonatomic, assign) NSMutableArray* levelHighscoresArray;
我会将其更改为
@property (nonatomic, strong) NSMutableArray* levelHighscoresArray;