Objective c 超出范围-NSMutableArray错误
我能找到的大多数教程都只对这类数组中的对象使用NSString -谢谢 亚历克斯E 编辑Objective c 超出范围-NSMutableArray错误,objective-c,object,nsmutablearray,Objective C,Object,Nsmutablearray,我能找到的大多数教程都只对这类数组中的对象使用NSString -谢谢 亚历克斯E 编辑 data=[[NSMutableArray alloc]initWithCapacity:numsp]retain]; //data=[[NSMUTABLEARRY arrayWithCapacity:NUMISP]retain]; 计数=0; while(计数
data=[[NSMutableArray alloc]initWithCapacity:numsp]retain];
//data=[[NSMUTABLEARRY arrayWithCapacity:NUMISP]retain];
计数=0;
while(计数
仍然是相同的错误,即使在切换“data=”时也是如此。我能在代码中发现的唯一错误是您的
NSArray
初始化
您的工作地点:
data = [[[NSMutableArray alloc] initWithCapacity:numISF]retain];
//data = [[NSMutableArray arrayWithCapacity:numISF] retain];
count = 0;
while (count < numISF)
{
[data addObject:[[[rouge_col_data alloc]init]autorelease]];
count++;
}
你应该做:
data = [[NSMutableArray arrayWithCapacity:numISF] init];
这是因为arrayWithCapacity
是一个工厂方法,将返回一个自动释放的实例。如果要在此方法之后继续使用该对象,则需要保留它,并且可以如下所示:
data = [NSMutableArray arrayWithCapacity:numISF];
我能在代码中发现的唯一错误是NSArray
初始化
您的工作地点:
data = [[[NSMutableArray alloc] initWithCapacity:numISF]retain];
//data = [[NSMutableArray arrayWithCapacity:numISF] retain];
count = 0;
while (count < numISF)
{
[data addObject:[[[rouge_col_data alloc]init]autorelease]];
count++;
}
你应该做:
data = [[NSMutableArray arrayWithCapacity:numISF] init];
这是因为arrayWithCapacity
是一个工厂方法,将返回一个自动释放的实例。如果要在此方法之后继续使用该对象,则需要保留它,并且可以如下所示:
data = [NSMutableArray arrayWithCapacity:numISF];
您不需要对阵列的结果调用init
,其容量为:
callarrayWithCapacity:
已返回初始化(但自动删除)的对象。或者,您可以调用[[NSMutableArray alloc]initWithCapacity::
您的循环有一个off by one错误;您从零开始,因此将添加一个额外的对象。添加这个额外的对象将会成功-它看起来不像你想要做的
您可能希望自动释放要添加到数组中的对象。阵列将自行保留它们。如果您确实需要保留对象本身,这很好,但是让数组为您保留是很常见的
您应该保留
数组本身,否则它将在事件循环结束时消失
您不需要对阵列的结果调用init
,其容量为:
callarrayWithCapacity:
已返回初始化(但自动删除)的对象。或者,您可以调用[[NSMutableArray alloc]initWithCapacity::
您的循环有一个off by one错误;您从零开始,因此将添加一个额外的对象。添加这个额外的对象将会成功-它看起来不像你想要做的
您可能希望自动释放要添加到数组中的对象。阵列将自行保留它们。如果您确实需要保留对象本身,这很好,但是让数组为您保留是很常见的
您应该保留
数组本身,否则它将在事件循环结束时消失
是否需要保留数组取决于方法完成后是否需要。是否需要保留数组取决于方法完成后是否需要。是否有更好的方法解决此问题?是否有更好的方法解决此问题?