Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Coredata内存泄漏:无法调用Denit。。导致内存泄漏_Ios_Swift_Core Data_Memory Leaks_Nsfetchedresultscontroller - Fatal编程技术网

Ios Coredata内存泄漏:无法调用Denit。。导致内存泄漏

Ios Coredata内存泄漏:无法调用Denit。。导致内存泄漏,ios,swift,core-data,memory-leaks,nsfetchedresultscontroller,Ios,Swift,Core Data,Memory Leaks,Nsfetchedresultscontroller,我正在将消息保存到coredata中,当我离开控制器时,它不会显示。它也会导致内存泄漏,每次我展示一个内置函数的新控制器时,内存泄漏会越来越大 func saveMessagetoCoreData(text: String, timestamp: NSNumber, status: String, friend: Friend) { let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).manage

我正在将消息保存到coredata中,当我离开控制器时,它不会显示。它也会导致内存泄漏,每次我展示一个内置函数的新控制器时,内存泄漏会越来越大

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,它将不再被调用


有人知道发生了什么吗?

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

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

message.user
指向
friend
,而
friend.lastMessage
指向
message
。只要他们被释放,你就应该没事。什么是保留对视图控制器的引用?

嗨,你是如何释放它们的?另外,你所说的保留对视图控制器的引用是什么意思?如果我理解正确,前一个控制器保留对它的引用以将用户信息传输到下一个控制器,只有在我发送消息时才会发生这种情况。您是否能够修复此问题?解决办法是什么?对我来说这很有帮助