gpt4 book ai didi

ios - NSManagedObjectContext refreshObject 中的 EXC_BAD_ACCESS

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:13 24 4
gpt4 key购买 nike

我继承了一些快速代码,这些代码在从核心数据中获取后立即执行 refreshObject。被提取的对象与另一个表有关系。 fetch 和 refreshObject 在 performBlockAndWait 中。代码如下。崩溃似乎始于 iOS9。

  • 知道为什么 refreshObject 会抛出 EXC_BAD_ACCESS 吗?解决方法是什么?
  • 获取后立即执行 refreshObject 的目的是什么?该表仅包含几行。这是必要的吗?一起删除有什么缺点吗?

    context.performBlockAndWait {
    let className = self.className()
    let fetchRequest = NSFetchRequest(entityName: className)
    groups = (try? context.executeFetchRequest(fetchRequest)) as? [FavoriteLocationGroup]
    if groups != nil {
    groups!.sortInPlace { $0.name < $1.name }
    for group in groups! {
    context.refreshObject(group, mergeChanges: false) <<< crashes here
    }
    }
    }

在此先感谢您提供的任何帮助!

value of context

what group is

最佳答案

您可以尝试用

替换 sortInPlace 行吗
groups = groups!.sort { $0.name < $1.name }

我遇到过类似的问题。调用 sortInPlace 后,应用程序在随机位置以 Release模式崩溃。似乎它会导致某种内存损坏。 sort() 效果很好。

更新:我能够使用以下代码重现崩溃(在 OS X Cocoa 应用程序中也会崩溃):

import Cocoa

class MyObject {
var x: Int?
}

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

@IBOutlet weak var window: NSWindow!

var array = [MyObject]()

func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application

for x in 0..<100000 {
let object = MyObject()
object.x = x
array.append(object)
}
array.sortInPlace { $0.x < $1.x } // CRASH
}
...
}

关于ios - NSManagedObjectContext refreshObject 中的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897126/

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