@IBAction func sendSweet(sender: UIBarButtonItem) {
var inputTextField: UITextField?
let alert = UIAlertController(title: "New sweet", message: "Enter a sweet", preferredStyle: .alert)
alert.addTextField { (textField: UITextField) in
textField.placeholder = "Your sweet"
inputTextField = textField
}
let sendAction = UIAlertAction(title: "Send", style: .default, handler: {
[weak self] (alertAction: UIAlertAction) in
guard let strongSelf = self else { return }
if inputTextField?.text != "" {
let newSweet = CKRecord(recordType: "Sweet")
newSweet["content"] = inputTextField?.text as CKRecordValue?
let publicData = CKContainer.default().publicCloudDatabase
publicData.save(newSweet, completionHandler: {
(record: CKRecord?, error: Error?) in
if error == nil {
// we want ui code to dispatch asychronously in main thread
DispatchQueue.main.async {
strongSelf.tableView.beginUpdates()
strongSelf.sweets.insert(newSweet, at: 0)
let indexPath = IndexPath(row: 0, section: 0)
strongSelf.tableView.insertRows(at: [indexPath], with: .top)
strongSelf.tableView.endUpdates()
}
} else {
if let error = error {
print(error.localizedDescription)
return
}
}
})
}
})
alert.addAction(sendAction)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
present(alert, animated: true, completion: nil)
}
У меня есть этот обратный вызов в ад, я хочу знать,Уплотненных обратного вызов сильных опорного цикл
ли
[weak self]
&guard let strongSelf
в самых верхней части обратного вызова ад предотвратить сильный опорный цикл всего через НОД-х асинхронный обратный вызов. Я читал некоторые другие должности на здесь, также одна из книги, который сказал, если объект я имею в виду внутри обратного вызова можетdeinit
успешно, это означает, что хороший знак, не имея сильный опорный цикла, это все еще верно?Как предотвратить такой обратный вызов, можете ли вы привести меня к некоторым материалам или темам, которые я пропустил? синтаксис синтаксиса обещаний javascript?
это напоминает еще один пост в блоге я читал, только ссылочный цикл происходят, когда вы пытаетесь ссылаться в двух направлениях в иерархии объектов, но не в одном направлении –
То есть определение «цикл». – shallowThought