gpt4 book ai didi

ios - 由于获取核心数据对象时内存使用,应用程序卡住并终止

转载 作者:行者123 更新时间:2023-11-30 12:05:11 25 4
gpt4 key购买 nike

我有一个 iOS 应用程序,Core Data 已经工作了几个月,但在我升级到 High Sierra、Xcode 9/Swift 4 和 iOS 11 后的某个时候,它停止工作了。我并不是每天都在处理它,因为它是一个副业项目,所以我无法准确指出它何时停止工作。

当我的应用程序启动时,我会在 viewDidLoad 中获取所有 Project 对象(我的核心数据模型的一部分),并将它们放入 projects 属性中在我的 View Controller 中。我用以下方法获取

func fetchProjects() -> [Project] {
let fetchRequest = Project.fetchRequest() as! NSFetchRequest<Project>
var projects: [Project] = []

do {
projects = try coreDataStack.viewContext.fetch(fetchRequest)
} catch {
print(error.localizedDescription)
}

return projects
}

问题是,应用程序只是变白并开始耗尽设备的内存,然后退出,仅显示一条消息:来自调试器的消息:由于内存问题而终止。如果我删除对此方法的调用,它就会正常启动。

我将应用程序上传到 TestFlight,一位 friend 说它工作正常,所以这很可能是我的问题,但我不知道是什么。

更新 1做 Instruments 的问题是 Instruments Core Data 只能在模拟器上工作,而我的问题只有在我的设备上运行时才会出现。但是,当我在模拟器上运行它时,我没有看到任何我解释为错误的内容。

我尝试将 -com.apple.CoreData.SQLDebug 1 设置为应用程序的参数,但这也没有给我带来任何可疑之处。

我添加了我的核心数据堆栈类,以便您可以看到我如何设置它,尽管它非常标准。

final class CoreDataStack {

// MARK: Properties
static let sharedInstance = CoreDataStack()

lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: Strings.CoreData.modelName)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()

lazy var viewContext: NSManagedObjectContext = {
return self.persistentContainer.viewContext
}()

// MARK: Initialization
private init() {
}

// MARK: - Saving
func saveContext() {
guard persistentContainer.viewContext.hasChanges else {
return
}

do {
try persistentContainer.viewContext.save()
} catch let error as NSError {
print("Unresolved error \(error), \(error.userInfo)")
}
}
}

更新 2 奇怪的是,Realm 也表现出了类似的行为。它不允许我获取Project。也许是根本问题所在?

最佳答案

嗯,看来我通过全新安装我的设备来修复它。我还没有发现为什么会发生错误,但无论如何,这就是修复。

关于ios - 由于获取核心数据对象时内存使用,应用程序卡住并终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759416/

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