我使用的工具,以找到泄漏在我的iPhone应用程序和我发现我有在这条线的泄漏在我的代码NsMutable阵列保留计数
tableViewController.dataSource = [[NSMutableArray里的alloc] initWithArray:[subjects_dic allKeys]];
属性dataSource定义为retain。 这是一个错误?!
我使用的工具,以找到泄漏在我的iPhone应用程序和我发现我有在这条线的泄漏在我的代码NsMutable阵列保留计数
tableViewController.dataSource = [[NSMutableArray里的alloc] initWithArray:[subjects_dic allKeys]];
属性dataSource定义为retain。 这是一个错误?!
打破它:
NSMutableArray *mutArray = [[NSMutableArray alloc] initWithArray:[subjects_dic allKeys]];
[tableViewController setDataSource:mutArray];
[mutArray release];
这是你用来创建,推搡,并释放从导航控制器查看相同的模式。
如果您在属性声明中指定了保留,那么您分配给该属性的任何内容都将保留。
在你的榜样所以,你有两个选择:
而不是创造与分配/初始化方法一个新的数组,你可以简单的设置后使用[NSMutableArray arrayWithArray:[subjects_dic allKeys]];
发布的财产,一旦它。这个选项并不是一个好主意,因为如果该属性的内存管理在将来发生变化并且这个版本被遗忘了,它可能会导致崩溃。
我建议选择1
另一种选择:
// mutableCopy implicitly retains the array returned by allKeys
NSMutableArray *mutArray = [[subjects_dic allKeys] mutableCopy];
[tableViewController setDataSource:mutArray]; // @property dataSource retains mutArray
[mutArray release];