gpt4 book ai didi

ios - CoreData并发调试和NSManagedObject nativeValueForKey:

转载 作者:行者123 更新时间:2023-12-01 18:11:33 24 4
gpt4 key购买 nike

我已在我的应用中启用-com.apple.CoreData.ConcurrencyDebug 1。通过正确使用performBlock(andWait):,大多数崩溃很容易解决。

但是,访问托管对象的属性时有时也会崩溃。崩溃与通常的__Multithreading_Violation_AllThatIsLeftToUsIsHonor__不同。

相反,这是NSManagedObect primitiveValueForKey:_PFAssertSafeMultiThreadedAccess_impl内部的崩溃:

0x10626d48e <+190>: movq   0x2b2bbb(%rip), %rsi      ; "managedObjectContext"
0x10626d495 <+197>: movq %rbx, %rdi
0x10626d498 <+200>: callq *0x25bd2a(%rip) ; (void *)0x000000010602a000: objc_msgSend
0x10626d49e <+206>: movq 0x2b4683(%rip), %rsi ; "primitiveValueForKey:"
0x10626d4a5 <+213>: movq %rax, %rdi
0x10626d4a8 <+216>: callq 0x106303270 ; _PFAssertSafeMultiThreadedAccess_impl
0x10626d4ad <+221>: jmp 0x10626d3f1 ; <+33>
0x10626d4b2 <+226>: movq 0x2b25cf(%rip), %rsi ; "retain"
0x10626d4b9 <+233>: movq 0x25bd08(%rip), %r12 ; (void *)0x000000010602a000: objc_msgSend

也有人遇到过吗?在我看来,这就像是苹果代码中的错误, primitiveValueForKey:应该负责正确使用NSManagedObjectContext。

最佳答案

这不是Apple代码中的错误。您不能从创建它的线程之外的任何线程访问NSManagedObject。如果这样做,则违反了线程包含规则。

崩溃正是这样。您正在从创建该线程的线程之外的其他线程触摸NSManagedObject

关于ios - CoreData并发调试和NSManagedObject nativeValueForKey:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266016/

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