Почему «я» не требуется при первом закрытии? - PullRequest
0 голосов
/ 07 июня 2019

1) Я не могу понять, почему self не требуется при первом закрытии.Обычно вы получаете ошибку во время компиляции, которая выглядит примерно так: «добавьте self, чтобы сделать семантику захвата явной».myCollectionView - это IBOutlet, а myItems - это свойство, оба они строго ссылаются на self.

2) Правильно ли писать [unowned self] во втором закрытии?Правильно ли я предполагаю, что, поскольку на myCollectionView строго указана self, использование self в закрытии завершения его метода создаст цикл сохранения, если я не пишу [weak self] / [unowned self]?Второе закрытие требует ссылки self явно в отличие от первого.

guard let index = myItems.index(of: someItem) else { return }
myCollectionView.performBatchUpdates({
    myCollectionView.deleteItems(at: [IndexPath(item: index, section: 0)])
    myItems.remove(at: index)
}, completion: {[unowned self] _ in
    self.doSomething()
})
...