0

Я сохраняю сообщения в coredata, и когда я покидаю контроллер, он не ослабевает. Это также вызывает утечку памяти, которая становится все больше и больше каждый раз, когда я представляю новый контроллер с функцией внутри.Утечка памяти Coredata: Deinit не вызван .. вызывает утечку памяти

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 не дозвонились больше.

У кого-нибудь есть идея, что происходит?

ответ

2

Любая утечка памяти, вероятно, вызвана круговой ссылкой в ​​коде. Следующие две строки выглядят подозрительно ...

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

message.user указывает на friend и friend.lastMessage указывает на message. Пока они освобождаются, вы должны быть в порядке. Что держит ссылку на ваш контроллер?

+0

привет, как вы их освобождаете? – slimboy

+0

Кроме того, что вы подразумеваете под тем, что держит ссылку на ваш viecontroller, если я правильно понимаю, предыдущий контроллер имеет ссылку на него для передачи информации о пользователях следующему контроллеру – slimboy

+0

, кстати, это происходит только тогда, когда я отправляю сообщение – slimboy

 Смежные вопросы

  • Нет связанных вопросов^_^