gpt4 book ai didi

iphone - 自定义托管对象间歇性地卡在关系访问器中

转载 作者:行者123 更新时间:2023-11-29 05:04:54 24 4
gpt4 key购买 nike

在 iOS 上(使用 Xcode 4、iPad Simulator 4.3),我有一个“文章”实体和一个“作者”实体。有两种关系连接这两者(一篇文章有​​一个“作者”关系[可选,对多],一个作者也有一个“文章”关系[可选,对多])。

如果我从一个空数据库开始(从头开始,从模拟器中删除应用程序并再次点击调试)。它工作正常,我可以毫无问题地将数百个项目添加到数据库中。

但是,如果我首先向数据库添加一些项目,然后停止应用程序(是否按主页按钮)并再次启动(再次点击调试按钮),数据就在那里,我可以很好地“读取”数据,并且我可以很好地向其他实体添加数据。但是当我添加新作者(而不是文章)时,有时新闻会停在我的“Author.m”类(它是 NSManagedObject 的子类)中该函数的第二行:

- (void)addArticlesObject:(Article *)value {    
NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1];
[self willChangeValueForKey:@"articles" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
[[self primitiveValueForKey:@"articles"] addObject:value];
[self didChangeValueForKey:@"articles" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
[changedObjects release];
}

控制台中没有任何消息(调试器输出),如果我向前迈出一步,我将被发送到 __CFTypeCollectionRetain ,然后获得 EXC_BADACCESS 。

最后一步并不总是相同的,有时它不会返回,CPU 会达到 100%(50% 实际上它是双核机器),直到我点击停止或终止“应用程序”进程(xcode 响应良好) 。

有什么想法吗?

最佳答案

您可能正在看到由两侧对多关系的副作用引起的无限循环,例如当您将 Article 对象添加到 Author 对象时,会导致 Article 对象添加另一个 Author 实例,其中依次添加另一篇文章,依此类推...

这不会立即产生任何错误,因为代码中通常包含很长的循环。您收到的错误表明您在保留集合(数组、字典、集合)对象的 Core Foundation 对象中遇到某种溢出情况。

检查所有自定义访问器是否有副作用,以确保没有触发循环。您可以将日志语句放入访问器中以查看它们何时被调用。这会让你看到循环。

关于iphone - 自定义托管对象间歇性地卡在关系访问器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com