ViewDidLoad方法不保留一个变量?
问题描述:
这里是我的问题:ViewDidLoad方法不保留一个变量?
在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是空的......
答
你需要学习我的第一个基础管理。基本上,发生了什么事情,你不保留系列滚轮iVar。
尽量保留你的伊娃,或更好,营造浓厚的/保留属性,并使用存取方法。
+0
是的。我没有保留它。我认为当你在接口中编写属性时:@property(nonatomic,retain)NSMutableArray * seriesBool;它已经保留了。但事实并非如此。感谢所有的答案。我会先学习这个指南;) – user1581885 2012-08-07 12:52:19
答
必须设置属性等
@property(nonatomic,retain) NSMutableArray * seriesBool;
,并用它
self.seriesBool = [NSMutableArray的arrayWithCapacity:9];
或
使用
seriesBool = [[NSMutableArray alloc] initWithCapacity:9];
,而不是
seriesBool = [NSMutableArray arrayWithCapacity:9];
& u必须alloc和分配对象
seriesBool = [[NSMutableArray alloc] init];
seriesBool = [defaults objectForKey:@"seriesBool"];
您是否使用ARC或MRR? – *foe 2012-08-07 12:18:25
我认为在这种情况下并不重要。由于他没有使用强大的财产,也没有保留iVar,所以iVar正在被释放。 – 2012-08-07 12:21:52
@BrunoKoga你怎么知道他没有使用'strong'? – *foe 2012-08-07 12:22:24