Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了泛型 – 通用NSOperation子类失去了NSOperation功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

今天,当我试图“概括”我的’CoreData导入操作’时,我遇到了一个奇怪的问题. 似乎如果我创建NSOperation的通用子类,则不会调用main()函数. 简单的例子: class MyOperation<T: NSObject>: NSOperation { override func main() { println("My operation main was
今天,当我试图“概括”我的’CoreData导入操作’时,我遇到了一个奇怪的问题.
似乎如果我创建NSOperation的通用子类,则不会@L_118_1@main()函数.

简单的例子

class MyOperation<T: NSObject>: NSOperation {

    override func main() {
        println("My operation main was called")
    }
}

如果您创建此类的实例并将其添加到operationQueue,您将看到它的main()实际上没有被调用.

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view,typically from a nib.

    self.operationQueue = NSOperationQueue()
    let operation = MyOperation<NSString>()
    self.operationQueue!.addoperation(operation)
}

操作只是从准备好转换到执行状态,而不是@L_118_1@main().

如果我删除通用注释< T:NSObject>从MyOperation类它将工作正常.

这怎么可能?
在这里错过了什么吗?

问题是由这个简单的规则引起的:

因此,当桥接到Objective-C时,MyOperation看起来像纯粹的,没有方法被覆盖,NSOperation子类.

您可以通过使用@objc属性标记override func main()来查看此错误.

@objc override func main() {  // < [!] Method in a generic class cAnnot be represented in Objective-C
    println("My operation main was called")
}

大佬总结

以上是大佬教程为你收集整理的泛型 – 通用NSOperation子类失去了NSOperation功能全部内容,希望文章能够帮你解决泛型 – 通用NSOperation子类失去了NSOperation功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。