Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在NSO操作中使用UICollectionView的引用_Swift - Fatal编程技术网

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。我不知道这意味着什么,但它确实存在听起来是合法的。我会去读更多的。