问题标签 [nsblockoperation]
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.
ios - 了解 NSBlockOperation
我正在进入NSBlockOperation
,我有一些问题。值得注意的是,文档说addExecutionBlock
:
讨论
指定的块不应对其执行环境做出任何假设。
在接收器正在执行或已经完成时调用此方法
NSInvalidArgumentException
会引发异常。
会抛出什么样的情况NSInvalidArgumentException
?“当接收器正在执行时”到底是什么意思?什么会导致这种情况?
ios - NSBlockOperation、NSOperationQueue 和块
我必须从我的 RestAPI 同步一堆信息。我必须进行 6 次 RestAPI 调用才能完成工作。我用 Blocks 设计了 API 调用,如果有的话返回 NSError。其中 3 个调用应该嵌套执行,因为第一个调用向其他调用提供信息并允许执行,而其他 3 个调用可以独立运行。由于提高网络性能,我设计了我的同步调用如下:
- 1 NSBlockOperation 包含前嵌套的 3 个块;
- 1个包含其他三个块的NSBlockOperation;
- 1 NSBlockOperation 我用作“信号”并告诉我所有工作何时完成。
最后一个 NSBlockOperation 依赖于前两个 NSBlockOperation。
我还有一个 NSOperationQueue 包含所有三个 NSBlockOperation ,其中信号量 NSBlockOperation 作为队列中的最后一个添加。我要实现的结果是:前两个块同时调用,当它们的工作完成时,调用信号量 NSBlockOperation 并将控件返回给提供 UIAlertMessage 的用户。
结果与前面解释的不一样:控件在没有等待syncAllBlocksInformation块结束的情况下返回。
在包含 NSBlockOperation 的代码下方:
在这里,调用上述块的代码:
怎么了 ?
ios - NSBlock 什么时候被释放?
在视图控制器中,我有一个复制类型的 NSBlock 属性,如下所示
当我的应用程序从 myViewController 弹出时,我的块会自动释放吗?
注意:我的项目启用了 ARC。
ios - 不了解 NSOperationQueue 序列
我有一个名为 DataFetcher 的模型类,它通过 Web 服务获取数据,然后将数据保存到 Core Data 数据存储区,然后通过委托方法更新 ViewController。这是不使用 NSOperation 的正常序列(正常工作):
我需要将 Web 服务调用和数据库更新调用放在后台线程上。我的想法是创建一个 NSBlockOperation 来进行 Web 服务调用,然后创建另一个 NSBlockOperation 来进行数据库更新。Web 服务操作在数据库更新操作开始之前完成存在依赖性。这是我要实现的代码:
当以这种方式设置时,我的 queryServiceFor: 方法永远不会被调用。我也不确定在哪里放置两个委托方法调用,因为它们更新 UI 并且应该在主线程上。我过去曾多次使用 GCD,但现在需要 NSOperations 的一些额外功能。任何人都可以帮忙吗?谢谢!
ios - 结合 AFHTTPRequestOperation 和 NSBlockOperation (iOS)?
我想执行 2 个请求并在最后发送通知。我检查操作序列的代码:
我期望以下控制台日志:
但实际结果是:
为什么?
ios - 带有操作块的 NSOperationQueue 在 SWIFT 中无法按预期工作
我必须按顺序检查一系列操作。但如果任何操作失败,我需要在执行队列中列出的操作之前调用其他操作。
在每个操作中,我传递一个仅有效 2 小时的密钥...假设密钥是在上午 10 点生成的,我将开始从服务器获取数据,并且需要 15 分钟才能完全获取所有数据。
但问题是我已经在上午 11:59 开始获取数据,并且在获取信息期间密钥已过期。所以我需要再发送一个请求以获取密钥并继续进行下一步操作。
我尝试过的代码:
此代码无法正常工作。
它在队列中添加操作如下:
而不是这个,我想要如下的操作序列。
任何帮助将不胜感激。
grand-central-dispatch - 为什么主线程上的 dispatch_sync 会导致死锁而 NSBlockOperation 不会?
如题,主队列和主线程上的dispatch_sync()会导致死锁,像这样:
但是NSBlockOperation不会造成死锁:
所以,我不明白为什么?这个函数和dispatch_sync一样直到块完成才返回,那么为什么它不会导致死锁呢?他们之间有什么不同?
ios - iOS Swift:NSBlockOperation 在 iPhone 模拟器 6s 和 5s 上的行为不同
我发现NSBlockOperation
在我的应用程序中更新 UI 时看到不同的行为很奇怪。
对于每个UIButtons
(例如拇指向上、拇指向下、喜欢等),我将它们链接到它们的操作方法,类似于下面使用NSBlockOperation
.
以Like按钮为例:
对ParseNetworkUtils
进行 API 调用,返回(Bool) 和(String?) 的闭包。在此,我使用以下方法更新 UI :completed
error
NSBlockOperation
self.updateUserLabels()
mainQueue
该代码在iPhone 模拟器 5s中运行良好,并且符合预期,但是,在模拟器 6s 或 6s Plus 上,需要更长的时间才能看到Like
重新启用按钮,并且updateUserLabels()
甚至在NetworkUtils.sharedInstance.likeQuestion()
调用返回闭包之前调用该方法。
我想知道为什么在不同的 iPhone 模拟器上会有如此大的差异,以及如何让它们像在 5s 上一样工作?
ios - NSBlockOperation 保留周期
我必须使用 NSOperations 下载图像(并保存到磁盘),但内存没有释放!经过一番谷歌搜索后,我发现了钩子,表明我在保留周期中的操作。我试图修复我的代码,但问题仍然存在。
谁能在我的代码中找到错误?
有我的代码:
swift - Swift NSBlockOperation() Leak: cannot make NSBlockOperation() weak
To avoid a memory leak when using NSBlockOperation in Objective-C, we would have to declare the variable as weak to be able to reference the block operation inside the block (to cancel if needed), typically like this:
But in Swift, when I try declare my NSBlockOpeartion as weak, it is always nil.
Without the weak reference, all is fine except it is leaking a little bit of memory each time. How can I reference the block inside the block without leaking memory in Swift?