【发布时间】:2012-09-08 14:20:50
【问题描述】:
我正在使用以下代码检查对象是否存在,然后再将其删除:
if(titlescopy.count >= i)
{
if([[titlescopy objectAtIndex:i] isKindOfClass:[NSString class]])
{
[titlescopy removeObjectAtIndex:i];
}
}
但是,我收到此错误:
* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArrayM objectAtIndex:]:索引 2 超出范围 [0 .. 1]' * 第一次抛出调用栈:(0x365a56c3 0x3881e97f 0x364f1055 0x494b 0x37fdb8d5 0x37fe7d75 0x37fe7a81 0x38001ddd 0x38001b97 0x172bd 0x3805f8e5 0x3805f897 0x3805f875 0x3805f12b 0x3805f621 0x37f87d29 0x37f74f29 0x37f74843 0x34ea25d3 0x34ea2203 0x3657a593 0x3657a537 0x365793b9 0x364ec39d 0x364ec229 0x34ea131b 0x37fc88f9 0x283b 0x2798) libc++abi.dylib:终止调用抛出异常(lldb)
为什么会这样?我正在使用的代码应在尝试删除对象之前检查对象是否存在,但显然不存在。
谢谢!
【问题讨论】:
-
请注意,以这种方式使用
isKindOfClass:过滤数组内容是非常奇怪的。通常,使用isKindOfClass:表示架构较弱。
标签: iphone objective-c ios xcode nsarray