YYKit icon indicating copy to clipboard operation
YYKit copied to clipboard

YYModel 的ModelToJSONObjectRecursive方法对数据量大处理时会奔溃

Open liuzh opened this issue 9 years ago • 4 comments

image 如上截图。我的数据处理会比较大,大约有22兆,当然内存溢出也是其中的一个问题。但报错的地方是ModelToJSONObjectRecursive方法中

for (id obj in (NSArray *)model) {
            if ([obj isKindOfClass:[NSString class]] || [obj isKindOfClass:[NSNumber class]]) {
                [newArray addObject:obj];
            } else {
                id jsonObj = ModelToJSONObjectRecursive(obj);
                if (jsonObj && jsonObj != (id)kCFNull) [newArray addObject:jsonObj];
            }
        }

处理。我不知道是否有改善的可能。同时也要感谢大神的分享精神。

liuzh avatar Aug 08 '16 11:08 liuzh

报错的是 __NSFastEnumerationMutationHandler,那这可能是在转换的过程中,有其他线程修改了 Model。

ibireme avatar Aug 08 '16 12:08 ibireme

这种情况,有方法修复或避免吗?

liuzh avatar Aug 09 '16 01:08 liuzh

在转换的过程中,不要修改 Model 啊,或者把 Model 弄成线程安全的。

ibireme avatar Aug 11 '16 13:08 ibireme

2021年了。这是递归的问题。对象的属性中,又持有了当前对象的类。 “A” -> "B", "B" -> "A"

zhumingjun9 avatar Jul 30 '21 07:07 zhumingjun9