Iphone在initWithNibName中分配内存

时间:2011-01-11 21:37:21

标签: iphone memory-management

为initTithNibName方法中设置为属性的数组分配内存是否正确如果我不想再为它分配内存(即使视图是弹出然后再次按下)?

由于

2 个答案:

答案 0 :(得分:2)

好吧,如果视图显示然后隐藏,它将同时收到initWithNibNamerelease;所以你应该做的是这样的事情:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
   yourArray = [[NSArray alloc] init];
}

- (void) dealloc
{
   [yourArray release];
   [super dealloc];
}

无论视图控制器的生命有多短,它都会在被解雇时获得释放,这反过来最终会导致dealloc被调用。

答案 1 :(得分:2)

它是正确的,只确保在你的dealloc 中释放它。确保当你分配启动时你不要使用你的setter,而应该直接为init分配实例变量:

_myArray = [[NSArray alloc]init];

如果您只想通过属性方法,那么执行以下操作:

self.myArray = [NSArray array];

再次,不要忘记在你的dealloc中发布它:

 -(void)dealloc
{
    [_myArray release];
    [super dealloc];
}