gpt4 book ai didi

ios - 核心数据内存泄漏 : Deinit does not get called.。导致内存泄漏

转载 作者:搜寻专家 更新时间:2023-11-01 07:20:34 25 4
gpt4 key购买 nike

我正在将消息保存到 coredata 中,当我离开 Controller 时它不会取消初始化。它还会导致内存泄漏,每次我展示一个带有内部功能的新 Controller 时,内存泄漏会变得越来越大。

func saveMessagetoCoreData(text: String, timestamp: NSNumber, status: String, friend: Friend) {

let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let doubletimestamp = Double(timestamp)
let date = NSDate(timeIntervalSinceReferenceDate: (doubletimestamp))

createMessageWithText(text, friend: friend, context: moc, date: date, status: "...")
do {
try moc.save()
//moc.reset()

} catch let err {
print(err)
}


private func createMessageWithText(text: String, friend: Friend, context: NSManagedObjectContext, date: NSDate, isSender: Bool = false, status: String) -> Mesages {
let message = NSEntityDescription.insertNewObjectForEntityForName("Mesages", inManagedObjectContext: context) as! Mesages

message.user = friend
message.text = text
message.timestamp = date
message.isSender = isSender
message.status = status
message.fromID = NSUserDefaults.standardUserDefaults().objectForKey("FBid") as! String
friend.lastMessage = message

return message

}

当消息保存到 coredata 中时,如果我关闭 viewcontroller,它就不会再调用 deinit。

有人知道发生了什么事吗?

最佳答案

任何内存泄漏都可能是由代码中的循环引用引起的。以下两行看起来很可疑...

    message.user = friend
...
friend.lastMessage = message

message.user 指向friendfriend.lastMessage 指向message。只要他们被释放,你应该没问题。什么在引用您的 View Controller ?

关于ios - 核心数据内存泄漏 : Deinit does not get called.。导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39341643/

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