我正在使用Xcode 10.1,并且是Swift 4中没有经验的程序员。
我可以在没有警告或错误的情况下执行以下代码(为UICollectionView单元设置动画):
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let cell = collectionView.cellForItem(at: indexPath) as? CompanyCollectionViewCell else { return }
UIView.animate(withDuration: 0.1, delay: 0, options: [.curveEaseOut], animations: {
cell.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
}) { (finished) in
UIView.animate(withDuration: 0.08, delay: 0, options: [.curveEaseIn], animations: {
cell.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
}, completion: { (finished) in
DispatchQueue.main.async {
self.performSegue(withIdentifier: "showTradeView", sender: self)
}
})
}
}
...但是我担心动画闭包内的保留周期。
我是否需要在最后一个“完成:”闭包中使用[无主的自我]? 我需要在第一个动画闭包中使用[unown cell]吗?
最后(有点不相关,对不起),我是否必须在DispatchQueue.main内调用performSegue代码,因为没有它似乎很高兴吗?
非常感谢您的帮助。