问题标签 [nsoperationqueue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 多个 NSOperationQueues?
我想NSOperations
在我的应用程序中使用来解决线程问题。我已经阅读了一些教程,现在我知道我必须做什么,但是我有一个问题。NSOperationQueue
每个班级都必须有相同的内容。如果我NSOperationQueue
在每个班级都使用新的怎么办。会不会有并发问题?
objective-c - NS操作和键值观察
我正在创建一个 MyOperation 对象(继承自 NSOperation)并添加到 NSOperationQueue。然后我在 MyOperation 上做 KVO。我正在使用这种方法
如果完成,则从 MyOperation 获取值。在这种方法中,我使用来自其他类的便捷方法来获取其他数据。
也许在 observeValue... 方法中存在同步问题?
cocoa - NSOperation 无法在 TableView 上加载数据
我在 NSOperation 中遇到问题。我尝试了很多方法,但它会在屏幕后面运行,但不会让它出现在我的表格视图上。谁能帮我解决这个问题。我是 NSOperation 的新手。
最近的.h
最近的.m
iphone - iPhone 上异步 NSURLConnection didLoadResource 后的核心数据阻塞 UI
每次有人触摸 UITableView 中的一行时,我都会启动一系列异步 NSURLConnections,它会下载数据,然后解析并将该数据保存到 Core Data 中。
问题是,当我这样做时,UI 在数据下载期间是响应式的,但是一旦开始解析和保存,UI 就会变得无响应。
NSURLConnection 封装在一个实现 NSURLConnection 协议的类中,当 NSURLConnection 触发 didLoadResource 时,它会启动一个处理解析和保存的 DataAdapter 类。我在想这就是我的 UI 阻塞的原因。
以前有没有人处理过这个问题?我有哪些选择?将 DataAdapter 放入 NSOperation?
concurrency - iPhone:NSOperationQueue 串行运行操作
我有一个单例 NSOperationQueue 来处理我所有的网络请求。但是,我注意到,当我运行一个特别长的操作(此特定操作至少需要 25 秒)时,我的其他操作在完成之前不会运行。
maxConcurrentOperationCount 设置为 NSOperationQueueDefaultMaxConcurrentOperationCount,所以我认为这不是问题所在。
为什么会发生这种情况?除了产生多个 NSOperationQueues (我不确定是否可行的解决方案,我也不确定这是一个好主意),解决此问题的最佳方法是什么?
谢谢。
iphone - NSInvocationOperation 和主线程
想象一下,我有一个视图,其中有一些 UIKit 对象作为它的子视图(例如,UIActivityIndicatorView
这没关系)。这个视图还有一个选择器,称为doSomething
,它以某种方式管理 UIKit 对象(在我们的示例中,它可以启动或停止指示器视图)。
我NSInvocationOperation
用initWithTarget:self selector:@selector(doSomething) object:nil
. 然后将其添加到NSOperationQueue
. 一切正常。
如何?!它应该是一个新线程和非线程安全的 UIKit 对象!为什么没有发现错误(也没有发生崩溃)?
iphone - NSThread 与 NSOperationQueue 与 ??? 在 iPhone 上
目前我正在使用NSThread
在另一个线程中缓存图像。
交替:
或者,我可以使用NSOperationQueue
有什么理由放弃NSThread
吗?GCD 是为 iPhone 发布的第四个选项,但除非有显着的性能提升,否则我宁愿坚持在大多数平台上都可以使用的方法。
根据@Jon-Eric 的建议,我采用了NSOperationQueue
/NSOperation
子类解决方案。它工作得很好。该类NSOperation
足够灵活,您可以根据需要将其与调用、块或自定义子类一起使用。无论您如何创建您的NSOperation
,您都可以在准备好运行它时将其放入操作队列中。这些操作既可以作为放入队列的对象,也可以作为独立的异步方法运行,如果需要的话。由于您可以轻松地同步运行自定义操作方法,因此测试非常容易。
自从我提出这个问题以来,我已经在几个项目中使用了同样的技术,我对它保持我的代码和测试干净、有条理和愉快的异步方式感到非常满意。
A++++++++++++ 将再次子类化
iphone - NSOperation 需要额外的保留
我正在开发一个 iPad 应用程序。它使用 NSOperation 在后台下载一些东西,由 NSOperationQueue 处理。我发现,除非我向 NSOperation 添加保留,否则在执行操作操作后我会崩溃。NSOperationQueue 的 addOperation 表示它保留了 NSOperation,而 NSOperation 本身保留了目标对象。因此,我不明白为什么需要我的额外保留。
这不会阻碍我的进步,除非我试图实现取消异步操作并在其位置创建一个新操作的模式。我还不能在 iPhone OS 4.0 上进行开发(它提供了 waitUntilFinished),所以我需要另一种方法来知道释放我的额外保留是安全的(或者找到一种根本没有额外保留的方法)。
有什么建议么?
iphone - NSOperationQueue 似乎在完成时挂起几秒钟
我有一个实现 fromUITableViewDataSource
和UITableViewDelegate
协议的自定义视图控制器。当我为我的表加载数据时(在我的viewDidLoad
方法中),我创建 aNSOperationQueue
和 aNSInvocationOperation
并将其添加到队列中。我抛出一个活动指示器,然后viewDidLoad
退出。
用于操作的方法结束活动指示器动画。
我注意到,当操作完成时,在操作真正完成之前会有 5-7 秒的暂停,即使通过 NSLog 看起来操作的方法返回了。
我曾尝试使用 Instruments 来找出暂停发生的位置,但我无法从中分辨出来,因为我的大部分 CPU 时间都花在了系统库中。
编辑 这是一个缩写版本:
为了清楚起见,队列中的最后一个操作是这样的:
我在日志中看到的是上述日志消息的输出,然后是 5 秒的暂停,最后是带有隐藏指示器的视图。
有任何想法吗?
iphone - 从 NSOperation 中取消 NSOperationQueue
我有一些 iPhone SDK 4.0 代码初始化 anNSOperationQueue
然后添加三个类(ClassA
、ClassB
和ClassC
)以一个接一个地运行。ClassA
, ClassB
, 和ClassC
都是 的子类NSOperation
。
相关代码如下。
依赖的原因是因为只有在成功完成其操作classB
时才应该运行。classA
同样,classC
仅应在成功完成时运行classB
。
目前,我很难弄清楚如何防止,例如,如果没有成功完成,则无法classB
运行。classA
继续这个例子,我想以某种方式[NSOperationQueue cancelAllOperations]
从内部唤起,classA
但我不知道如何NSOperationQueue
从内部classA
(这是一个NSOperation
子类)获得对父级的处理。这只是我最初的想法,所以我愿意接受任何其他更好的建议来达到同样的结果!
每个类中都有条件代码来确定它们是否已正确完成 - 目前它们只是 NSLogging “成功”或“失败”到控制台以进行调试。在一个完美的世界中,我希望能够NSLog(@"Fail")
用一些代码替换每个类中的语句,这将阻止 NSOperationQueue 中的所有其他类运行。
任何建议都将受到欢迎(和赞赏)。