以下是我的问题:
在viewDidLoad
方法中,我使用NSUserDefaults
创建变量(如果是“第一次运行”我创建它并用NSNumber
填充它。然后我尝试在另一个中使用它方法而且......没有。它看起来像是空的。任何人都可以帮助我吗?很多谢谢
- (void)viewDidLoad {
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"seriesBool"]!=nil)
{
seriesBool = [defaults objectForKey:@"seriesBool"];
}
else
{
int i;
seriesBool = [NSMutableArray arrayWithCapacity:9];
for(i=0; i<9; i++)
{
[seriesBool addObject:[NSNumber numberWithBool:YES]];
}
}
-(IBAction)toAction:(id)sender
{
NSLog(@"array: %@", seriesBool);
}
seriesBool是空的......
答案 0 :(得分:3)
你必须设置像
这样的属性@property(nonatomic,retain) NSMutableArray * seriesBool;
并使用它
self.seriesBool = [NSMutableArray arrayWithCapacity:9];
或
使用
seriesBool = [[NSMutableArray alloc] initWithCapacity:9];
而不是
seriesBool = [NSMutableArray arrayWithCapacity:9];
&安培;你必须分配和分配对象
seriesBool = [[NSMutableArray alloc] init];
seriesBool = [defaults objectForKey:@"seriesBool"];
答案 1 :(得分:1)
您需要先学习内存管理的基础知识。发生了什么,基本上,你没有保留seriesBool iVar。
尝试保留您的iVar,或者更好地创建一个强/保留属性并使用访问器方法。