मेरे पास TextViewTableViewCell
, मेरे पास एक ब्लॉक का ट्रैक रखने के लिए एक चर है और एक कॉन्फ़िगर विधि है जहां ब्लॉक को पास और सौंपा गया है।
यहाँ मेरी TextViewTableViewCell
कक्षा है:
//
// 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)
}
}
}
जब मैं अपनी विधि में कॉन्फ़िगर विधि का उपयोग करता हूं cellForRowAtIndexPath
, तो मैं जिस ब्लॉक से गुजरता हूं, उसमें कमजोर स्वयं का उपयोग कैसे ठीक से करता हूं।
यहां मेरे पास कमजोर स्वयं के बिना है:
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
अद्यतन : मुझे निम्नलिखित का उपयोग करके काम करना है [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
जब मैं इसके [unowned self]
बजाय करता हूं [weak self]
और if
स्टेटमेंट निकालता हूं , तो ऐप क्रैश हो जाता है। यह कैसे के साथ काम करना चाहिए पर कोई विचार [unowned self]
?