试图从单身人士传递NSMutableArray

时间:2014-08-01 06:33:43

标签: objective-c

我已经创建了一个名为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)
}

1 个答案:

答案 0 :(得分:2)

除了这部分外,它看起来不错。

@property (nonatomic, assign) NSMutableArray* levelHighscoresArray;

我会将其更改为

@property (nonatomic, strong) NSMutableArray* levelHighscoresArray;