Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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
Ios 创建全局NSOperationQueue_Ios_Swift_Nsoperationqueue - Fatal编程技术网

Ios 创建全局NSOperationQueue

Ios 创建全局NSOperationQueue,ios,swift,nsoperationqueue,Ios,Swift,Nsoperationqueue,我有一门课: class Item: NSManagedObject { func fetchProducts() { let backgroundQueue = NSOperationQueue() backgroundQueue.maxConcurrentOperationCount = 5 for n in items { backgroundQueue.addOperationWithBlock(){

我有一门课:

class Item: NSManagedObject {
    func fetchProducts() {
         let backgroundQueue = NSOperationQueue()
         backgroundQueue.maxConcurrentOperationCount = 5
         for n in items {
             backgroundQueue.addOperationWithBlock(){
                self.someFunc(n)
             }
        }
    }
}
如果我理解的话,每个实例最多创建5个线程。但是我想创建全局
NSOperationQueue()

我创建了全局结构:

struct GVariables {
    static let globalBackgroundQueue = NSOperationQueue()
}
问题:如何设置
maxConcurrentOperationCount
和其他设置

因为如果我这样修改方法:

func fetchProducts() {
   GVariables.globalBackgroundQueue.maxConcurrentOperationCount = 5
}
struct GlobalQueue {
    static let globalBackgroundQueue = GlobalQueue()
    let backgroundQueue = NSOperationQueue()

    private init () {
         backgroundQueue.maxConcurrentOperationCount = 5
         //... more settings

    }
}

会是一样的吗?还是不?

如果我明白你在追求什么,我会做更多类似的事情:

func fetchProducts() {
   GVariables.globalBackgroundQueue.maxConcurrentOperationCount = 5
}
struct GlobalQueue {
    static let globalBackgroundQueue = GlobalQueue()
    let backgroundQueue = NSOperationQueue()

    private init () {
         backgroundQueue.maxConcurrentOperationCount = 5
         //... more settings

    }
}
这是一个保存自身实例的单例。可以在初始值设定项中初始化所需的任何值。注意private关键字,它确保您不能创建该类的多个实例


强制性免责声明:当心单例…

为什么不将其添加到扩展中,但如果我想将其用于其他类等?在模型类中尝试?我看到您正在使用核心数据。记住,托管对象只能在其上下文队列中安全访问。