2012-08-03 74 views
0

我的应用程序创建多个阵列,例如:内存管理阵列

NSString *ItemsA[91]; 
int GroupRep[11]; 
double TaxR[16]; 
short InputT[200]; 
BOOL tmpEx[20]; 

,需要在这些结构可通的应用,直到应用程序的结束。我的问题是 我是否需要显式地分配NSString数组还是可以以这种方式初始化每个数组单元:ItemsA [10] = @“use option1”例如。

ii。我是否需要释放或释放上述任何阵列

iii。我明白如果我没有专门使用alloc,那么iOS会自动执行保留/释放的事情。如果是的话什么:

UITapGestureRecognizer *gestur1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dispR)]; 

同样我创建一个类:

myClass=[[PieClass alloc]initWithFrame:CGRectMake(1+ipX, ipY, 320, rView.frame.size.height)]; 
    ... 
    [myClass release] 

这个类分配自己的东西。我是否需要释放每一个或只是整个班级,如上所述就足够了。

谢谢

回答

1

通常,不要使用语言数组来存储对象。使用NSMutableArray实例;他们相对较少的开销(可能无法衡量),而且更自然。

您还需要将任何值存储在可以本地化的文件中。因此,您需要加载所述文件,并且再次将它们存储在NSArray中会更容易。 developer.apple.com上有关于该主题的大量文档。

最后,这看起来像您的应用程序数据。因此,你可能真的想拥有一个适当的模型层来管理所述数据。有一天,你可能会想重构应用程序来从服务器获取数据,并有一个合适的模型层可以帮助你做到这一点。

请注意,您通常可以挂起模型 - 数据管理的东西 - 关闭应用程序委托。或者你可以通过某个单身人士到达它。

这是一个高层次的答案,目标是尝试引导您走向更符合预期模式的路径。

+0

感谢您的意见。建立一个数据层听起来像是一个好主意,当我重构应用程序时将会这样做。 – 2012-08-04 16:24:04

+0

现在我只想更深入地研究内存管理,尽管我知道基本规则,即如果您分配,复制或新建对象时拥有它,有时我不确定何时完全释放obj内存。例如,如果我有一个方法,用一些值和计算初始化一个数组,并且我已经在它里面有了alloc。我需要通过应用程序的这些值,有时需要再次调用该方法,如果我需要重新计算新的值,所以我什么时候释放alloc?在应用程序结束时或在我调用该方法之前或之后?希望它是有道理的,我可以详细说明,如果需要 – 2012-08-04 16:25:40

+0

不知道我明白“数据管理的东西 - 关闭你的应用程序委托”...如果你能阐述它的伟大。 – 2012-08-04 16:28:42