我在 Objective-C 的 Xcode 4.5.1 中工作。我正在进行听力测试,并希望将每个问题的相关数据存储在一个数组中。我做了一个单例 MyManager。我用它来存储数据。
它适用于简单的 int/float 值等,但我一直在尝试使用 NSMutableArray。我是 Objective-C 的新手,所以我假设/希望我犯了一些明显的错误。
所以,我想用浮点值填充 mySNRArray。我开始明白我不能简单地添加浮点数,因为它只会接收对象。因此,我使用 NSNumber。
问题:当我尝试读取我应该添加到 NSMutableArray 的数据时,我得到 (null)。
我现在将提供相关代码:
我的经理.h
@interface MyManager : NSObject
{
NSMutableArray *mySNRArray;
}
@property (readwrite) NSMutableArray *mySNRArray;
+ (id)sharedManager;
@end
我的经理.m
@implementation MyManager
@synthesize mySNRArray;
+ (id)sharedManager
{
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (id)init
{
if (self = [super init])
{
NSMutableArray *mySNRArray = [[NSMutableArray alloc]init];
}
return self;
}
@end
测试视图控制器.m
//First, I try to add a value to mySNRArray.
MyManager *Manager = [MyManager sharedManager];
NSNumber *tempStorage1 = [[NSNumber alloc] initWithFloat:mySNR];
[Manager.mySNRArray insertObject:tempStorage1 atIndex:questionNumber];
//The NSLog below is showing the correct value.
NSLog(@"%@ : mySNR", tempStorage1);
...
for (n = 0; n < questionNumber; n++)
{
//Second, I try to acces the values I supposedly added to mySNRArray.
MyManager *Manager = [MyManager sharedManager];
//This NSLog below is showing (null).
NSLog(@"Value at %i in SNRArray = %@", n, [Manager.mySNRArray objectAtIndex:n]);
}
...
我希望有人能解释我的错误。