0

这是我的问题:

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 为空...

4

2 回答 2

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"];
于 2012-08-07T12:47:21.883 回答
1

您需要首先学习内存管理的基础知识。基本上,那里发生的事情是您没有保留 seriesBool iVar。

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

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

于 2012-08-07T12:18:56.970 回答