Ios 访问CoreData SharedData.sharedInstance.managedObjectContext时的EXC_错误访问(代码=1,地址=0x30)

Ios 访问CoreData SharedData.sharedInstance.managedObjectContext时的EXC_错误访问(代码=1,地址=0x30),ios,xcode,core-data,exc-bad-access,Ios,Xcode,Core Data,Exc Bad Access,我最近升级到了Xcode 11.2.1和最新的iOS 13.2.2,现在发现了错误 EXC\u错误访问(代码=1,地址=0x30) 出错的行从forEach循环调用大约2000次 如果我在出错行上设置一个断点,并在调试状态下运行代码,则不会发生崩溃 如果在出错语句之前添加printprint(“Hi mom”),则不会发生错误 我很确定添加print语句只是绕过了实际错误,可能会在以后或在不同的iOS设置中或在较低的频率下发生 else if actionFigureSpecif

我最近升级到了Xcode 11.2.1和最新的iOS 13.2.2,现在发现了错误

EXC\u错误访问(代码=1,地址=0x30)

出错的行从forEach循环调用大约2000次

如果我在出错行上设置一个断点,并在调试状态下运行代码,则不会发生崩溃

如果在出错语句之前添加print
print(“Hi mom”)
,则不会发生错误

我很确定添加print语句只是绕过了实际错误,可能会在以后或在不同的iOS设置中或在较低的频率下发生

        else if actionFigureSpecificsCoreData != nil {
            coreDataUpdateDate = self.actionFigureSpecificsCoreData!.updateDate! as Date

            // WARNING:  Not saving here intentionally as no actual changes are being made - see save functions
            // WARNING:  dont create the iCloud record at this point otherwise the save context may error for null values create the record

            // if the coreData record exists without all defaults and the iCloud record doesn't exist, create the iCloud record.
            // case where device was off-line
            if self.isActionFigureSpecificsCoreDataDefaultValues() == false {
                //                                #if DEBUG
                //                                    print("No iCloud record for Saving from non-default coreData \(self.actionFigureSpecificsGlobalUniqueId) on \(kActionFigureSpecificsRecord)")
                //                                #endif
                isCloudSaveNeeded = true
                shouldSetCloudDataToCore = true
            }
        }
        // if both core data and cloud are nil, set the core data record
        else {

<<<<<<<<-------------crashes on the next line unless I add in a print statement ----------------->>>>>>>

            self.actionFigureSpecificsCoreData = ActionFigureSpecificsCoreData(context: SharedData.sharedInstance.managedObjectContext!)
            self.actionFigureSpecificsCoreData!.actionFigureRecordName = self.actionFigureGlobalUniqueId

            // want it and have it are set to defaults by core data
            self.actionFigureSpecificsCoreData!.updateDate = NSDate() as Date

            // all other values are set to the database defaults
        }
苹果崩溃日志的顶部

{"app_name":"My Toy Chest","timestamp":"2019-11-13 07:18:28.55 -0800","app_version":"6.037","slice_uuid":"6ae4b8f2-ac29-3b31-87a8-3ebf4634251f","adam_id":1217665205,"build_version":"1","bundleID":"com.LightningBrainGames.My-Toy-Chest","share_with_app_devs":false,"is_first_party":false,"bug_type":"109","os_version":"iPhone OS 13.2.2 (17B102)","incident_id":"41DB21DA-774E-42C1-B340-425689BBCB6A","name":"My Toy Chest"}
Incident Identifier: 41DB21DA-774E-42C1-B340-425689BBCB6A
CrashReporter Key:   43b464acde1fb0315e3dc82db0fb5a581b250135
Hardware Model:      xxx
Process:             My Toy Chest [478]
Path:                /private/var/containers/Bundle/Application/5E9921A8-1895-4880-864B-F1D2A0DCDE3B/My Toy Chest.app/My Toy Chest
Identifier:          com.LightningBrainGames.My-Toy-Chest
Version:             1 (6.037)
AppStoreTools:       11B48b
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.LightningBrainGames.My-Toy-Chest [590]


Date/Time:           2019-11-13 07:18:28.0713 -0800
Launch Time:         2019-11-13 07:18:18.5049 -0800
OS Version:          iPhone OS 13.2.2 (17B102)
Release Type:        User
Baseband Version:    n/a
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x000000018cf8fec4 __pthread_kill + 8
1   libsystem_pthread.dylib         0x000000018ceab774 pthread_kill$VARIANT$mp + 112
2   libsystem_c.dylib               0x000000018cdff844 abort + 100
3   libsystem_malloc.dylib          0x000000018ce98b80 _malloc_put + 0
4   libsystem_malloc.dylib          0x000000018ce98df4 malloc_zone_error + 100
5   libsystem_malloc.dylib          0x000000018ce84044 szone_free + 452
6   CoreFoundation                  0x000000018d1bd468 __CFBasicHashDrain + 420
7   CoreData                        0x0000000191a475ec -[NSManagedObjectContext+ 71148 (_NSInternalChangeProcessing) _processRecentChanges:] + 832
8   CoreData                        0x0000000191b746d0 _performRunLoopAction + 368
9   CoreFoundation                  0x000000018d114c2c __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
10  CoreFoundation                  0x000000018d10fb18 __CFRunLoopDoObservers + 416
11  CoreFoundation                  0x000000018d1100e4 __CFRunLoopRun + 1308
12  CoreFoundation                  0x000000018d10f8a0 CFRunLoopRunSpecific + 464
13  GraphicsServices                0x0000000197067328 GSEventRunModal + 104
14  UIKitCore                       0x0000000191200740 UIApplicationMain + 1936
15  My Toy Chest                    0x00000001001f95e4 0x1001f4000 + 21988
16  libdyld.dylib                   0x000000018cf9a360 start + 4```

听起来你可能有某种比赛条件。打印语句在速度方面非常脆弱,它可能会减慢速度,足以使情况消失。我会调查的。这有点像PITA,这是调试类似于
os\u路标
的东西的好方法。这是WWDC的一段视频。我用它调试了一些难以发现的问题。再次查看您的代码,您的单例声明可以简化一点。这里有一篇很酷的帖子:Adrian-I将代码更新为
static let sharedInstance=SharedData()
。根据您链接中的评论,我确实对SharedData使用了private init()。我仍然会犯同样的错误。我在每个记录集中添加了一个保存上下文,然后开始接收
错误:严重的应用程序错误。在核心数据更改处理期间捕获异常。这通常是NSManagedObjectContextObjectsIDChangeNotification的观察者中的错误-[\uu NSCFSet addObject:]:尝试用userInfo(null)插入nil
Cool。我认为共享实例的声明不是问题所在,只是有点冗长<代码>libsystem\u malloc.dylib malloc\u zone\u error+100是我要去的兔子洞。此链接不是一个解决方案,但它确实提供了一些可能有用的东西来调试您的问题:
{"app_name":"My Toy Chest","timestamp":"2019-11-13 07:18:28.55 -0800","app_version":"6.037","slice_uuid":"6ae4b8f2-ac29-3b31-87a8-3ebf4634251f","adam_id":1217665205,"build_version":"1","bundleID":"com.LightningBrainGames.My-Toy-Chest","share_with_app_devs":false,"is_first_party":false,"bug_type":"109","os_version":"iPhone OS 13.2.2 (17B102)","incident_id":"41DB21DA-774E-42C1-B340-425689BBCB6A","name":"My Toy Chest"}
Incident Identifier: 41DB21DA-774E-42C1-B340-425689BBCB6A
CrashReporter Key:   43b464acde1fb0315e3dc82db0fb5a581b250135
Hardware Model:      xxx
Process:             My Toy Chest [478]
Path:                /private/var/containers/Bundle/Application/5E9921A8-1895-4880-864B-F1D2A0DCDE3B/My Toy Chest.app/My Toy Chest
Identifier:          com.LightningBrainGames.My-Toy-Chest
Version:             1 (6.037)
AppStoreTools:       11B48b
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.LightningBrainGames.My-Toy-Chest [590]


Date/Time:           2019-11-13 07:18:28.0713 -0800
Launch Time:         2019-11-13 07:18:18.5049 -0800
OS Version:          iPhone OS 13.2.2 (17B102)
Release Type:        User
Baseband Version:    n/a
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x000000018cf8fec4 __pthread_kill + 8
1   libsystem_pthread.dylib         0x000000018ceab774 pthread_kill$VARIANT$mp + 112
2   libsystem_c.dylib               0x000000018cdff844 abort + 100
3   libsystem_malloc.dylib          0x000000018ce98b80 _malloc_put + 0
4   libsystem_malloc.dylib          0x000000018ce98df4 malloc_zone_error + 100
5   libsystem_malloc.dylib          0x000000018ce84044 szone_free + 452
6   CoreFoundation                  0x000000018d1bd468 __CFBasicHashDrain + 420
7   CoreData                        0x0000000191a475ec -[NSManagedObjectContext+ 71148 (_NSInternalChangeProcessing) _processRecentChanges:] + 832
8   CoreData                        0x0000000191b746d0 _performRunLoopAction + 368
9   CoreFoundation                  0x000000018d114c2c __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
10  CoreFoundation                  0x000000018d10fb18 __CFRunLoopDoObservers + 416
11  CoreFoundation                  0x000000018d1100e4 __CFRunLoopRun + 1308
12  CoreFoundation                  0x000000018d10f8a0 CFRunLoopRunSpecific + 464
13  GraphicsServices                0x0000000197067328 GSEventRunModal + 104
14  UIKitCore                       0x0000000191200740 UIApplicationMain + 1936
15  My Toy Chest                    0x00000001001f95e4 0x1001f4000 + 21988
16  libdyld.dylib                   0x000000018cf9a360 start + 4```