【发布时间】:2013-06-07 00:58:02
【问题描述】:
有人可以帮助我了解我在这里做错了什么会导致此堆栈跟踪:
1 libobjc.A.dylib 0x3a8a897a objc_exception_throw + 26
2 CoreFoundation 0x32b7fd80 __NSFastEnumerationMutationHandler + 124
3 CoreFoundation 0x32adbcee -[NSArray containsObject:] + 134
代码如下:
NSMutableArray *leftoverArray = [[NSMutableArray alloc] initWithArray:itemsArray];
for (NSDictionary *tempItem in tempItemsArray)
{
if (![itemsArray containsObject:tempItem])
{
[itemsArray addObject:tempItem];
}
else
{
[leftoverArray removeObject:tempItem];
}
}
for (NSDictionary *item in leftoverArray)
{
[itemsArray removeObject:item];
}
[mainController.tblView reloadData];
tempItemsArray 通过以下方式传递给这个类:
@property (nonatomic, strong) NSMutableArray *tempItemsArray;
我的应用中的其他地方确实有此代码:
if (appDelegate.loading)
appDelegate.tempItemsArray = itemsArray;
else
appDelegate.itemsArray = itemsArray;
[tblView reloadData];
谢谢!
【问题讨论】:
-
添加exception breakpoint 看看哪一行代码抛出了异常
-
您是如何创建
tempItemsArray的?它确实包含NSDictionary对象吗? -
这是来自 Xcode 的崩溃报告,由于某种原因,我无法在我的机器上重现它。
-
修改了我上面的代码以明确 tempItemsArray 的来源。
-
@EthanAllen 你确定
tempItemsArray不能作为itemsArray的别名,可能是错误的吗?
标签: ios objective-c cocoa-touch nsmutablearray nsarray