繁体   English   中英

iOS-如何在Swift中使用NSOperationQueue

[英]iOS-How to use NSOperationQueue in Swift

我在我的应用程序中使用NSOperationQueue ,我用Objective C编写它。我正在将我的应用程序转换为Swift。我想知道如何在Swift中使用NSOperationQueue

这是关于目标c的代码

 -(NSOperationQueue*)operationQueue
{
    if(_operationQueue == nil) {
        _operationQueue = [NSOperationQueue new];
    }

    return _operationQueue;
}

我已经快速尝试过了

func operationQueue() -> NSOperationQueue{

    if(_operationQueue == nil){        
        _operationQueue = NSOperationQueue.new()
    }
}

但它给了我错误:

NSOperationQueue无法转换为'MirrorDispotion'

Objective-C代码使用operationQueue方法(或属性)加上_operationQueue实例变量进行“按需初始化”。 相应的Swift 3代码将是(对于旧版本,由NSOperationQueue替换OperationQueue ):

class MyClass {

    var _operationQueue: OperationQueue?

    func operationQueue() -> OperationQueue {
        if _operationQueue == nil {
            _operationQueue = OperationQueue()
        }
        return _operationQueue!
    }

    // ...
}

代码中的主要错误是未定义_operationQueue ,并且该函数未返回值。

但是使用“懒惰存储属性”可以更容易地在Swift中实现:

class MyClass {

    lazy var operationQueue = OperationQueue()

    // ...
}

当第一次使用该属性时,该值计算一次

let mc = MyClass()
print(mc.operationQueue) // operation queue is created and returned
print(mc.operationQueue) // same operation queue is returned

有关详细信息,请参阅Swift文档中“属性”中的“惰性存储属性”。

在objective-c中的new不是真正的函数,它更像是init

所以在swift你可以使用

func operationQueue() -> NSOperationQueue{

    if(_operationQueue == nil){        
        _operationQueue = NSOperationQueue()
    }
    return _operationQueue
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM