问题标签 [nsoperation]
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.
iphone - What to do in a separate thread?
So I've read some stuff about multithreading and NSOperation and wondering how I can use that to improve my app. Using Instruments I have isolated a few places where my app could definitely use a speed improvement. My question is, are these kinds of things suitable for another thread using NSOperation?
Drawing a view: I have a rather complex view that is taking a little time to draw. When it's drawn I experience some lag.
Allocating and playing audio: I'm using AVAudioPlayer
to play some background music. When I allocate it, again some lag.
Calculations: I'm also performing some calculations and doing some comparisons with lots of integers.
I strive for the best possible performance for my app, so what would you do?
objective-c - NSOperation 最佳实践,响应取消
在我的 NSOperation 子类中,我在子类方法中的长循环顶部或任何长方法(核心数据提取、数组排序等)之前检查取消main
。请参阅下面的示例。
除了排干游泳池并尽快退出该方法之外,我还应该做些什么吗?
iphone - 关于在 iphone OS 中使用 NSOperationQueue 和 NSOperation 的问题
我使用 NSOperation 执行任务:使用 NSURLConnection 下载一些文件,然后合并占用大量 CPU 和内存的文件
我需要在新/后台线程中执行任务
所以我将这些任务添加到 NSOperationQueue 并设置 maxConcurrentOperationCount = 2
但结果是在合并文件时它会阻塞主线程(UI 暂时没有响应),似乎没有在新/后台线程
中执行如何让它按我预期的那样运行?
iphone - 内存管理导致的崩溃问题(使用 Core Data)
我正在使用核心数据。从那里我正在检索 10000+ 数据
使用 NSOperation,我在 UITableView 上显示大量数据。
但正如我在 XCode Instruments 中看到的那样,我的内存使用量不断增加
这就是原因,崩溃活动存在于设备中而不是模拟器中
有人想对此发表评论吗?
objective-c - 核心数据:合并添加到背景上下文中的孩子很时髦
背景
多线程核心数据应用程序
NSTreeController
并NSOutlineView
带有绑定在背景上下文的 NSOperation 中创建子对象
使用合并到主要上下文中
mergeChangesFromContextDidSaveNotification
问题
如果我将 20 个子对象创建操作排队,一旦合并完成,我在大纲视图中只看到大约 10-15 个子对象。
如果我将最大并发操作数设置为 1,它会完美运行,我会看到 20 个孩子。
问题
我想做的事是不可能的吗?我可以看到核心数据可能如何难以成功地进行合并。还是我的代码有问题?
代码
JGGroupController
JGAddChildrenObjectOperation - NSOperation 子类
multithreading - CoreAudio 和 Threads,怎么做?
我可以为 AU 回调(在 C 中)设置一个单独的线程吗?如何 ?如果是这样,哪些线程方法最适合 CoreAudio?NS线程?NSOperationQueue?GCD?还有什么?
非常感谢。
objective-c - NSOperation 不会产生新线程?
我有一个 NSOperationQueue,里面有很多 NSOperations。我想确保代码的特定部分不会并行执行。我使用这样的 NSLock 对象:
不幸的是,我收到以下错误,而不是阻塞“锁定”调用:
-[NSLock 锁定]: 死锁 ('(null)')
经过一番调查,我注意到所有 NSOperations 似乎都在同一个线程中运行。在记录线程 ID 后,我得出了这个结论:
所有操作似乎都在同一个线程中运行。即使它们作为操作并行运行。
那有意义吗?我有点困惑。我错过了什么吗?你觉得同时使用 NSOperation 和 NSLock 有什么问题吗?(如果不是,那么我确定错误在我的代码中)
iphone - 在 iPhone 上设计和启动冗长、依赖异步进程的最佳方式?
我正在设计一个 iPhone 应用程序。我有一个非常紧张的过程要开始,在高层次上定义如下:
- 用户从 UITableView 中选择项目进行应用内购买。
- 用户在 UI 中确认购买。
- 异步过程转到 App Store 以检查项目之前是否已购买。如果没有,则购买该项目。然后通知 iPhone 应用程序购买项目成功。(如果它是之前购买的,则应用程序不关心并继续执行第 4 步。)
- 然后,该应用程序会转到我的私人服务器以下载所购买商品的数据。
- 然后应用程序将数据导入 CoreData。
当然,在流程的每一步,都会向用户报告错误,整个流程就会停止。
我有一个名为 activityIndicatorController 的类,它为用户提供了一个不错的 UIActivityIndicator 以及一些指示正在发生的事情的文本。在流程的每一步,activityIndicator 上的标签都必须更新为新状态。
问题/疑虑:
从设计和编码的角度来看,最简单的事情就是在所有步骤中使用一个大的 NSOperation。但是,我担心这可能会在以后妨碍我。我不想走错路,然后不得不撕下一堆代码。
我的直觉告诉我最好实现三个独立的 NSOperations(OpInAppPurchase、OpDownload、OpImport)。但是,每个后续操作不仅依赖于它之前的操作,而且如果一个操作失败,则根本不应该调用其余的 NSOperations。但是,我不确定如何设计/编码。
任何帮助表示赞赏。
编辑:
感谢大家到目前为止的帮助。对于我想要完成的事情,我不希望用户取消操作。但是,我确实希望该应用程序能够取消后续操作。我没有意识到并且只是通过反复试验(即“duh”时刻)发现的是,当一个操作在一个单独的进程中启动时,任何被启动的子操作也在同一个单独的进程中执行.
在阅读了下面链接的 Apple 文章后,我发现 NSInvocationOperation 完全满足我的需求,并且使我不必为每个进程创建单独的 NSOperation 对象。然后,如果失败,它将使用 NSError 对象对主线程进行回调,或者在成功时对主线程进行不同的回调。
也许我会有一些其他的进程,我确实希望用户将来能够取消,我会将 NSOperation 与其他事件一起使用。
ios - 哪些任务比 GCD 更适合 NSOperation?
在为 iPhone 编程时,哪些任务更适合使用NSOperation
而不是使用?GCD
在我看来,他们似乎在做同样的事情。我看不出一个人的优势和劣势。
iphone - NSFetchedResultsController 和 NSOperation
在 aUITableViewController
中,我将 anNSFetchedResultsController
用于我的数据。一切正常,除了当我开始在一个单独的线程中导入一些对象时:我使用NSOperationQueue
我将对象插入到我的ManagedObjectContext
. 这发生在单独的视图中。NSFetchedResultsController
似乎不喜欢这样并写入控制台:
严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了一个异常。尝试使用 userInfo (null) 为单元格创建两个动画
显然它试图获取新对象。
关于并发的话题,Core Data Programming Guide说了类似ManagedObjectContext
为每个线程使用一个,但这听起来相当复杂。
我现在不知道我是否应该真正创建自己的NSOperation
子类,在其中创建一个ManagedObjectContext
等等,或者是否可以阻止NSFetchedResultsController
更新一段时间?
我会很感激一些帮助,法比安