ViewDidLoad方法不保留变量?

时间:2012-08-07 12:16:10

标签: iphone ios xcode nsuserdefaults

以下是我的问题:

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是空的......

2 个答案:

答案 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。

看看这里:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html

尝试保留您的iVar,或者更好地创建一个强/保留属性并使用访问器方法。