我的应用程序中的iOS 13崩溃了,我想知道是否还有其他人遇到过这种情况。
因此,我有一个nsordered设置,并且我试图通过它进行循环。我对其进行了复制,但似乎当该集合为空时,会得到以下崩溃报告: [__ NSArrayM getObjects:range:]:范围{0,1}超出了空数组的范围 >
这是代码。
(NSOrderedSet<ClassA *> *)set {
return [self.mutableSet copy];
}
//调用上面的方法以获取集合的副本
for (ClassA *obj in [classManager manager].set)
这是堆栈跟踪:
CoreFoundation -[__ NSCFString characterAtIndex:]。cold.1
CoreFoundation -[__ NSArrayM getObjects:range:]
CoreFoundation -[NSOrderedSet countByEnumeratingWithState:objects:count:]
答案 0 :(得分:0)
您的问题在其他地方。我只是运行了以下代码:
NSMutableOrderedSet *s1 = [NSMutableOrderedSet new];
NSOrderedSet *s2 = [s1 copy];
NSOrderedSet *t1 = [NSOrderedSet new];
NSMutableOrderedSet *t2 = [t1 mutableCopy];
NSOrderedSet *t3 = [t2 copy];
NSLog(@"\n%@ %@ %@ %@ %@\n", s1, s2, t1, t2, t3);
这将输出:
{(
)} {(
)} {(
)} {(
)} {(
)}
我建议您打印self.mutableSet
-它可能不是您期望的。另外,您的for
行完全没有上下文,因此不知道发生了什么。我的结果:
NSLog(@"%@ %@", NSStringFromClass([s1 class]), NSStringFromClass([t1 class]));
// __NSOrderedSetM __NSOrderedSetI