今天,当我试图“通用化”我的“
CoreData导入操作”时遇到了一个奇怪的问题。看来,如果我创建NSOperation的通用子类,main()
则不会调用该func。
简单的例子:
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)
}
操作简单地从过境ready
到executing
和finished
状态,而无需调用main()
。
如果我<T: NSObject>
从MyOperation
类中删除通用注释,它将正常工作。
这怎么可能?我在这里想念什么吗?
问题是由以下简单规则引起的:
通用类中的方法无法在Objective-C中表示
结果,当桥接到Objective-C时,它MyOperation
看起来像是纯的,没有方法被覆盖,是NSOperation
子类。
您可以通过标记看到这个错误override func main()
与@objc
属性。
@objc override func main() { // < [!] Method in a generic class cannot be represented in Objective-C
println("My operation main was called")
}
本文向大家介绍iOS NSOperation queue?相关面试题,主要包含被问及iOS NSOperation queue?时的应答技巧和注意事项,需要的朋友参考一下 答案:存放NSOperation的集合类。 操作和操作队列,基本可以看成java中的线程和线程池的概念。用于处理ios多线程开发的问题。 网上部分资料提到一点是,虽然是queue,但是却并不是带有队列的概念,放入的操作并非是按照
本文向大家介绍Objective-C的NSOperation多线程类基本使用指南,包括了Objective-C的NSOperation多线程类基本使用指南的使用技巧和注意事项,需要的朋友参考一下 NSOperation 一、NSOperation 1.简介 NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作。 NSOperation本身是抽
本文向大家介绍iOS多线程应用开发中使用NSOperation类的基本方法,包括了iOS多线程应用开发中使用NSOperation类的基本方法的使用技巧和注意事项,需要的朋友参考一下 一、NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue
问题内容: 使用泛型时,我发现了一个奇怪的行为。 在此类中,该成员与以下内容无关: 该类在main中使用: 编译错误为“类型不兼容。必需:找到的字符串:对象”。 似乎Java忘记了使用原始类型时的type参数。 我的Java版本是1.7.0_21 问题答案: 简而言之,由于是原始的,它的非静态成员也变为原始的。 JLS§4.8中对此进行了概述: 更准确地说,原始类型定义为以下之一: 通过采用通用类
🕒岗位/测开 美团4.23上午一面-4.23下午二面 +oc+offer 一天速通,感恩🥹 #暑期#
我正在LocalStream环境(嵌入式flink集群)中运行一个流处理应用程序。我成功地使用我的代码处理了几次特定的数据集。我昨天想在对处理逻辑进行一些修改后重新运行应用程序,但是在大约3/4的数据处理方式之后,flink集群似乎无缘无故地崩溃了。查看浓缩日志-我的评论插入尖括号中 第一条信息是关于我的源代码从s3读取数据并将其收集到flink中。 之后,第一个错误产生:https://gith