Wie man mit schwachem Selbst in schnellen Blöcken mit Argumenten richtig umgeht
In meinemTextViewTableViewCell
Ich habe eine Variable, um einen Block zu verfolgen, und eine Konfigurationsmethode, bei der der Block übergeben und zugewiesen wird.
Hier ist meinTextViewTableViewCell
Klasse:
//
// TextViewTableViewCell.swift
//
import UIKit
class TextViewTableViewCell: UITableViewCell, UITextViewDelegate {
@IBOutlet var textView : UITextView
var onTextViewEditClosure : ((text : String) -> Void)?
func configure(#text: String?, onTextEdit : ((text : String) -> Void)) {
onTextViewEditClosure = onTextEdit
textView.delegate = self
textView.text = text
}
// #pragma mark - Text View Delegate
func textViewDidEndEditing(textView: UITextView!) {
if onTextViewEditClosure {
onTextViewEditClosure!(text: textView.text)
}
}
}
Wenn ich die configure-Methode in meinemcellForRowAtIndexPath
Methode, wie verwende ich das schwache Selbst in dem Block, in den ich übergebe, richtig?
Folgendes habe ich ohne das schwache Selbst:
let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell
myCell.configure(text: body, onTextEdit: {(text: String) in
// THIS SELF NEEDS TO BE WEAK
self.body = text
})
cell = bodyCell
AKTUALISIEREN: Ich habe das Folgende zum Arbeiten benutzt[weak self]
:
let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell
myCell.configure(text: body, onTextEdit: {[weak self] (text: String) in
if let strongSelf = self {
strongSelf.body = text
}
})
cell = myCell
Wenn ich es tue[unowned self]
Anstatt von[weak self]
und nimm das rausif
Aussage, die App stürzt ab. Irgendwelche Ideen, wie das funktionieren soll[unowned self]
?