【问题标题】:objects in NSArray out of scopeNSArray 中的对象超出范围
【发布时间】:2011-11-23 11:08:03
【问题描述】:

我有一个填充数组然后返回它的函数。但是在调用函数中,数组并没有超出范围,而是里面的所有对象都超出了范围。

(NSMutableArray *)createObjectWith:(NSString *)result 
{
   NSMutableArray *array =[NSMutableArray array];
   for (int i=0 i<20;i++){

   Wp *newWp =[[Wp alloc]init] ;
   newWp.name= @"a";
   [array addObject:newWp];
 }
 return array;
}

调用函数:

data =[self createObjectWith:stringResult];

【问题讨论】:

  • 您好,您需要发布一些代码,您面临的确切问题是什么。
  • “超出范围”是什么意思?

标签: iphone objective-c memory-management


【解决方案1】:
[NSMutableArray array] 

返回一个自动释放的数组。如果你想使用该数组,最好保留它。

data =[[self createObjectWith:stringResult] retain];

另外你必须在添加到数组后释放你的 Wp 对象

   Wp *newWp =[[Wp alloc]init] ;
   newWp.name= @"a";
   [array addObject:newWp];
   [newWp release];  

顺便说一句,你对可变结果做了什么?

【讨论】:

  • 没有任何区别。当我在那里添加断点时,它会显示 100 个对象。但所有都超出了范围。
【解决方案2】:

终于知道这是调试器的问题。里面的对象没有超出范围。但是调试器是这么说的。

【讨论】:

  • 调试器数据显示非常不稳定,并且经常无法显示值。在断点处尝试在调试器控制台中输入“po myObjectName”(尤其是输入“po array”)。
猜你喜欢
  • 2011-01-31
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2015-01-26
相关资源
最近更新 更多