2011-06-10 51 views
0
aryDesc = [[NSMutableArray alloc]init]; 
    NSMutableArray *ary_Temp ; 
ary_Temp = [[NSMutableArray alloc]init ]; 
[ary_Temp addObject:@"Collins Burns"]; 
[ary_Temp addObject:@"cburns"]; 
[ary_Temp addObject:@"Active"]; 


    [aryDescListing addObject:ary_Temp]; 
[ary_Temp removeAllObjects]; 


[ary_Temp addObject:@"Collins Burns"]; 
[ary_Temp addObject:@"cburns"]; 
[ary_Temp addObject:@"Active"]; 


[aryDescListing addObject:ary_Temp]; 
    [ary_Temp removeAllObjects]; 

    NSLog(@"ary Description===== >>>%@",aryDescListing); 

我的代码中使用删除allobjects如上我得到的日志两个对象,但都是空的,我不知道wheather使用删除所有对象,或者为dealloc的。应该ary_Temp我使用removeAllobjects或页头它每次在我添加到aryDescListing后。问题时的NSMutableArray

感谢

+0

removeAllObjects不释放数组本身,NSLog(@“%@”,ary_Temp)在removeAllobject之前和之后都正常工作。 – Aravindhan 2011-06-10 06:29:42

+0

我已经执行了您的代码。但是我得到的输出如下所示ary说明== === >>>( ( “柯林斯烧伤”, cburns, 主动 ) ( “柯林斯烧伤”, cburns, 主动 ) ) – Tendulkar 2011-06-10 06:31:36

+0

除去allobjects意味着只删除对象,该不释放对象。如果你想释放对象意味着使用你想要的释放。 – Tendulkar 2011-06-10 06:33:42

回答

1

不要使用dealloc,改用releasedealloc将取消分配对象而不计入它的保留计数,它会迟早会破坏您的应用程序。

也许你想要这个? :

aryDesc = [[NSMutableArray alloc] init]; 
NSMutableArray *ary_Temp ; 

ary_Temp = [[NSMutableArray alloc] init]; 
[ary_Temp addObject:@"Collins Burns"]; 
[ary_Temp addObject:@"cburns"]; 
[ary_Temp addObject:@"Active"]; 
[aryDescListing addObject:ary_Temp]; 
[ary_Temp release]; 

ary_Temp = [[NSMutableArray alloc] init]; 
[ary_Temp addObject:@"Collins Burns"]; 
[ary_Temp addObject:@"cburns"]; 
[ary_Temp addObject:@"Active"]; 
[aryDescListing addObject:ary_Temp]; 
[ary_Temp release]; 

NSLog(@"ary Description===== >>>%@",aryDescListing); 

顺便说一句:removeAllObject将从阵列删除对象(并且将降低它们的retainCount由一个),但不将释放阵列。

+0

从编程的角度来说,多次分配和释放数组称为至少hunderads的时间确实不错。感谢您的输入,是否有其他方式来做到这一点。 – mrugen 2011-06-10 06:39:02

+0

你到底想要做什么?有6个对象的数组?一个数组的数组?只有两个数组的数组?这个答案是一个猜测,因为我认为你的想法在我看来并不明确。 – nacho4d 2011-06-10 23:30:17

+0

@mugen你的问题听起来像不成熟的优化。除非你有特定的,量化的性能问题,否则你不应该担心。 – bbum 2011-06-11 04:58:14