问题标签 [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.
objective-c - NSOperation 和 UIKit 问题
我正在使用从 NSOperation 继承的对象进行下载。我已经阅读了文档,当我的操作完成后,我必须调用
方法。它需要在主线程上调用,因为 UIKit 不是线程安全的,并且文档在这些非线程安全框架案例中说明了这一点。在委托方法中,我正在绘制 pdf 或图像,但是因为它是在主线程上绘制的,所以用户界面在绘制完成之前非常滞后。也许你能建议我一个避免这个问题的好方法吗?
iphone - iPhone:使用 NSOperationQueue 时出现内存泄漏
我在这里坐了至少半个小时才发现我的代码中存在内存泄漏。我刚刚使用 NSOperationQueue 用异步方法替换了对(触摸)方法的同步调用。在我对代码进行更改后,Leak Inspector 报告了内存泄漏。使用 NSOperationQueue 的版本有什么问题?
没有 MemoryLeak 的版本
带有 MemoryLeak 的版本(我没有看到任何内容)
当然,触摸方法也没有什么特别之处。只需更改文件的日期。
cocoa - NSOperation 无法在 TableView 上加载数据
我在 NSOperation 中遇到问题。我尝试了很多方法,但它会在屏幕后面运行,但不会让它出现在我的表格视图上。谁能帮我解决这个问题。我是 NSOperation 的新手。
最近的.h
最近的.m
iphone - NSOperation 在屏幕外位图上下文上创建 UIImage 时内存不足
我有一个具有多个 UIView 子类的应用程序,它们充当 UIScrollView 的页面。UIView 来回移动以向用户提供无缝体验。由于视图的内容绘制起来相当慢,它呈现在一个共享的 CGBitmapContext 上,由 NSOperation 子类的锁保护 - 在 NSOperationQueue 中一次执行 - 包装在 UIImage 中,然后由主线程用于更新内容的意见。
UIView 子类的 updateContentWithData: 在主线程上执行也一样简单
子类的 drawLayer:inContext: 方法只会从 UIImage 中获取 CGImage 并使用它来更新支持层或它的一部分。该过程不涉及保留或释放。
问题是一段时间后我的内存不足。UIView 的数量是静态的。CGImageRef 和 UIImage 被正确地创建、保留和释放(或者在我看来是这样)。Instruments 没有显示任何泄漏,只是可用内存不断下降,上升几次,然后下降甚至更低,直到应用程序终止。在此之前,该应用程序会循环浏览大约 2-300 个上述页面,但我希望在已经快速浏览了一堆页面之后,内存使用率会达到或多或少稳定的已用内存水平,或者,因为图像大小高达 3MB,较早耗尽。
任何建议将不胜感激。
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 (我不确定是否可行的解决方案,我也不确定这是一个好主意),解决此问题的最佳方法是什么?
谢谢。
objective-c - 在父 NSOperation 上执行选择器
我扩展了 NSOperation(称为 A),其中包含其他 NSOperation 的 NSOperationQueue(这是与 A 不同的另一个扩展类,将这些操作称为 B)。当操作 A 正在运行(执行 B 操作)时,当 B 操作上发生某些事件时,我如何在操作 A 上调用特定函数/方法?例如,完成它的每个操作 B 都会在操作 A 返回自身时调用一个函数?
*嵌套的 NSOperation 和 NSOperationQueue(s)
希望这个样机伪代码可以帮助绘制图片。
iphone - 新线程上的 XML 解析
在我的应用程序中,我想在用户滚动 tableview 并拉下第一个单元格后获取新的 xml 数据。由于数据是按时间顺序加载到 tableview 中的,因此更新的数据将显示在第一个单元格之前。
我想在新线程上运行这个过程,那么最好的选择是什么:
子类 NSThread 并使用它的实例
子类 NSOperation 并使用它的实例
直接使用 NSThread 方法
提前谢谢。
objective-c - performSelectorInBackground 和 NSOperation 子类的区别
我创建了一个用于运行深度计数器循环的测试应用程序。我分别使用 performSelectorInBackground 和 NSOperation 子类在后台线程中运行循环函数。
我还使用 performSelectorOnMainThread 在 backgroundthread 方法中通知主线程,并在 NSOperation 子类中使用 [NSNotificationCenter defaultCenter] postNotificationName 来通知主线程以更新 UI。
最初,两个实现都给了我相同的结果,我能够更新 UI 而没有任何问题。我发现的唯一区别是两个实现之间的线程数。
performSelectorInBackground 实现创建了一个线程,并在循环完成后终止,我的应用程序线程数再次变为 1。
NSOperation 子类实现创建了两个新线程并保持存在于应用程序中,并且在 main() 函数中循环完成后我可以看到 3 个线程。
所以,我的问题是为什么 NSOperation 创建了两个线程,为什么它没有像第一个后台线程实现一样被终止?
我有点困惑,无法决定哪种实现在性能和内存管理方面最好。
cocoa - NSOperation 在传递给委托时导致崩溃
对于 iPhone 应用程序,我使用 NSOperationQueue 来限制对 SQLite 数据库的访问,一次只能进行一个查询。我创建了一个 NSOperation 的子类,在主函数中我有以下内容:
代表方:
我传递的原因self
是允许委托访问查询操作的 ID(在每个委托打开多个请求的情况下)和查询结果。
在 的文档中performSelectorOnMainThread:withObject:waitUntilDone:
,它明确指出:
“此方法保留接收器和 arg 参数,直到执行选择器之后。”
但是,当委托方法尝试访问参数时,会引发“EXC_BAD_ACCESS”异常。关于为什么的任何想法?
奇怪的是,如果我在对 NSOperation 对象的崩溃引用之前设置断点,调试器允许我查看对象实例和所有参数的值。