数组计数抛出异常

时间:2010-11-02 16:20:17

标签: iphone objective-c cocoa cocoa-touch

* - [__ NSArrayM count]:发送到解除分配的实例0x5edd5e0的消息

我正在获取此类异常,并且崩溃了我的应用。代码是:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ 

 if(section == 0){
 return ([billDetials count]+ 1);
 }

 int rows = ([billers count] + 1);
  return rows;
}

[billers count]这个陈述我得到了那个例外...... 这里的billers是NSMutableArray,有6个对象。 tableView由2个部分组成。

所以我应该把数组计算为6,但它不会发生......

2 个答案:

答案 0 :(得分:6)

听起来像billers数组没有得到妥善保留。确保它是一个保留属性,或者在创建该数组时正确保留它。

阅读并完全理解这一点: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html%23//apple_ref/doc/uid/10000011i

答案 1 :(得分:2)

在您调用count方法之前,似乎已经取消分配'billers'NSArray。这可能是由于在发送计数方法之前自动释放或手动释放。

如果您使用“alloc”和“init”初始化billers,那么您可能很快就会释放该对象。如果您使用便捷方法或“autorelease”初始化它,那么该对象过早被垃圾收集(您需要保留它)。