Swift 在NSO操作中使用UICollectionView的引用
我想在我的Swift 在NSO操作中使用UICollectionView的引用,swift,Swift,我想在我的NSOperation中使用UICollectionView的引用,但我不知道如何创建它或将其作为参数传递 我在考虑创建一个var,然后在NSOperation中初始化,比如: class MyOperation: Operation { var collectionView: UICollectionView! init(col: UIColletionView) { collectionView = col } } 然后在将操作传递给队
NSOperation
中使用UICollectionView
的引用,但我不知道如何创建它或将其作为参数传递
我在考虑创建一个var,然后在NSOperation
中初始化,比如:
class MyOperation: Operation {
var collectionView: UICollectionView!
init(col: UIColletionView) {
collectionView = col
}
}
然后在将操作传递给队列时将其用作参数:
myQueue.addOperation(MyOperation(col: collectionView))
但是我在init
行中得到一个错误:“使用未声明的类型”。我知道它是未声明的,在得到参数之前我不知道它是什么。addOperation也有一个。您可以在操作块中捕获collectionView,但实际上不应该。UI更新应该只发生在主线程上,所以实际上您应该只捕获模型,在后台做一些工作,然后在主线程上调度回将更新collectionView的某个函数或块。本例假设它不会比ViewController更长寿,这通常不是一个好的假设。如果您不打算在viewController消失时取消操作,请使用[weak self]并在self消失时退出
myQueue.addOperation {
//Update model here
DispatchQue.main.asynch {
self.collectionView.reloadData()
}
}
可能是初始值设定项中的输入错误:col的类型为
uicollectionview
;你的意思是UICollecionView
(带“c”)?这一点也不尴尬。我要暂时停止看这个。Thankslol@AndreasOetjen一个输入错误换成了另一个…愚蠢的问题2:在进行任何更新之前,我能不能检查视图是否可见如果(ViewController().isViewLoaded&(ViewController().view.window!=nil)){则转到捕获self的主队列?这会导致self的生存期延长,直到闭包完成。[弱self]不会延长self的使用寿命。如果你不关心viewController在屏幕外时是否存在,那么window!=nil将起作用。你可以通过在VC上添加打印来Denit,并在块中添加一个NSthread.sleepForTimeInterval来测试你的使用寿命,以人为地使其超过你的view controller。我不知道这意味着什么,但它确实存在听起来是合法的。我会去读更多的。