问题标签 [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.

0 投票
4 回答
363 浏览

objective-c - Mac OS X 10.6 中的 NSOperation 是否存在错误?

NSOperation如果我在发送给它之前释放一个实例,-init我会得到一个segmentation fault.

我认为这是有效代码的原因:

  • Apple 在其文档中做到了这一点。
  • Gnustep 是在它implementation of NSNumber的 . (至少是。)
  • NSObjects-init不做任何事情,因此-release,属于的NSObject应该在此之前工作。
  • 你怎么看,这是一个错误吗?
  • 你能告诉我另一个具有相同行为的类的例子吗?
  • 知道为什么会这样吗?
0 投票
2 回答
1288 浏览

iphone - iPhone上的线程绘图

Apple 的文档指出 Quartz2D 通常是线程安全的。但是,在 NSOperation 期间绘制到图像上下文时,我遇到了崩溃(EXC_BAD_ACCESS)。

这是我目前的设置:

我怀疑崩溃与当前上下文有关,因为 UIGraphicsGetCurrentContext 文档声明它需要从主线程调用。这个对吗?还有其他方法可以获取图像上下文吗?

0 投票
2 回答
2254 浏览

iphone - NSOperations 队列和处理应用程序退出

我即将创建一系列NSOperations 并在队列中运行它们。

它们都是顺序的,一次运行一个。

这些操作将从 Web 获取数据并创建和保存核心数据托管对象。

如何处理应用程序退出的情况?由于操作在分离线程中运行,我怎样才能让主线程等到当前操作“安全”退出?在某些情况下,我很高兴线程(操作)在它们完成之前退出,因为在进一步的应用程序启动时,作业将继续并从中断的地方继续。

非常感谢,

麦克风

0 投票
4 回答
15878 浏览

iphone - NSOperation 中的异步方法

我正在从 Facebook Connect 获取一些数据(使用 FBConnect Objective-C 2.0 框架),并且我在 NSOperation 中完成所有这些工作。它在 NSOperation 中,因为我还有其他几个操作也在运行,这就是其中之一。

问题是所有 FBConnect 调用都是异步的。正因为如此,NSOperation 的 main 方法很快完成,操作被标记为完成。

有什么办法可以克服这个吗?FBConnect 中似乎没有同步选项!

非常感谢,

麦克风

0 投票
2 回答
706 浏览

iphone - iPhone/Cocoa Touch - 多线程问题(Stanford Presence 3 项目)

我在代码中设置了断点以查看问题出在哪里,我发现程序在 cellForRowAtIndexPath 方法中加载单元格时会崩溃,特别是当它从适当的数组 (followeesPhotoURLs) 中检索照片时。这是因为数组是空的 - 因为主线程决定在专用于从互联网下载的线程完成执行(它确实开始执行)之前执行单元加载方法,所以从未下载过照片。

我查看了该课程的审核员讨论组页面,发现其他人也有同样的问题,但该线程从未解决该问题,我通过电子邮件发送了无济于事: http ://groups.google.com/group/iphone- appdev-auditors/browse_thread/thread/ccfc6ae99b4cf45d/ef1b8935e749c7c2?hl=en&lnk=gst&q=presence3#ef1b8935e749c7c2

0 投票
3 回答
5446 浏览

iphone - 排队并发和非并发 NSOperations 的问题

我有一个 NSOperationQueue ,它包含 2 个 NSOperations 并设置为通过设置setMaxConcurrentOperationCount为 1 一个接一个地执行它们。

其中一个操作是标准的非并发操作(只是一个main方法),它同步地从 Web 检索一些数据(当然是在单独的操作线程上)。另一个操作是并发操作,因为我需要使用一些必须异步运行的代码。

问题是我发现并发操作只有在首先添加到队列时才有效。如果它发生在任何非并发操作之后,那么奇怪的是该start方法被调用得很好,但是在该方法结束并且我已经设置我的连接来回调一个方法之后,它永远不会这样做。之后不会执行队列中的进一步操作。就好像它在 start 方法返回后挂起,并且没有调用来自任何 url 连接的回调!

如果我的并发操作首先放在队列中,那么一切正常,异步回调工作,后续操作在完成后执行。我完全不明白!

你可以在下面看到我的并发 NSOperation 的测试代码,我很确定它是可靠的。

任何帮助将不胜感激!

主线程观察:

我刚刚发现,如果并发操作首先在队列上,那么该[start]方法将在主线程上调用。但是,如果它不是队列中的第一个(如果它在并发或非并发之后),[start]则不会在主线程上调用该方法。这似乎很重要,因为它符合我的问题的模式。这可能是什么原因?

并发 NSOperation 代码:

排队码

0 投票
3 回答
1683 浏览

delegates - NSOperation 不会取消 NSXMLParser。继续调用委托上的方法导致崩溃

我正在尝试在另一个线程上下载一些 XML,并对其进行解析。

我释放“控制器”,然后在 NSOperationQueue 上调用 cancelAllOperations。并在尝试将 nSXMLParser 的委托设置为 nil 的 NSoperation 上实现方法“取消”。

但是大约一秒钟后,NSXMLParser 仍然活着并且正在踢并调用它的委托(现在不再存在)上的方法,从而导致崩溃。

我只是不明白,我做错了什么?

0 投票
3 回答
5021 浏览

iphone - 导航控制器中带有 UITableView 的 UIActivityIndi​​catorView

我正在开发一个非常简单的应用程序,它是一个带有表格视图的导航控制器,当用户单击一行时,他会被定向到详细信息视图。

但是,详细信息视图从 Core Data 中提取数据。我正在提取相对大量的数据,加载大约需要三秒钟。

我想添加那个 UIActivityIndi​​catorView 来显示进度。

一旦用户单击该行,我就尝试启动动画,因此我将其设置为在 didSelectRowAtIndexPath 中进行动画处理

由于某种原因,活动指示器不会在详细信息视图的推送之前启动。

知道为什么吗?还是实现这种想法的最佳方式?

~阿达姆

0 投票
2 回答
2107 浏览

iphone - NSOperation performSelectorOnMainThread 崩溃

我正在从 NavigationController 的子视图调用 NSOperation。

Operation 从服务器加载一些数据,对其进行解析,然后发送一个

当工作完成时。这通常工作...

问题是当我在 NSOperation 执行其工作时从导航控制器按下后退按钮时,应用程序崩溃,因为该操作引用了一个已释放的实例。

我试过保留操作 - 但它仍然崩溃......

提前致谢

0 投票
2 回答
2664 浏览

iphone - iPhone - 从 NSOperation 返回

我正在使用 NSOperation 的子类来执行一些后台进程。我希望在用户单击按钮时取消操作。

这是我的 NSOperation 子类的样子

这就是我将此类的对象添加到队列并侦听 KVO 通知的方式

operationQueue = [[NSOperationQueue alloc] init]; [操作队列 setMaxConcurrentOperationCount:5]; [operationQueue addObserver:self forKeyPath:@"operations" options:0 context:&OperationsChangedContext];

要取消操作(例如单击按钮),我尝试调用 -cancel 但它没有任何区别。还尝试调用 -finish 但即使这样也不会改变任何东西。

每次我向队列添加操作时,队列大小只会增加。调用完成(使用 NSLog 语句检查),但它并没有真正结束操作。我仍然不太有信心我做对了

有人可以告诉我哪里出错了吗?

非常感谢