问题标签 [nsinvocationoperation]

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 投票
1 回答
136 浏览

objective-c - NSInvocationOperation 访问错误导致崩溃

我遇到了一个大问题NSInvocationOperation。当我在我的 iPod 4 固件 5.0.1 上运行时,一切正常。但是在我的 iPhone 4,iOS 4.1 上,它崩溃了。这是我的代码:

updateAnnotation 函数在 CustomAnnotation 类中定义:

}

不知道哪里错了?请帮我。谢谢大家!!!

0 投票
3 回答
232 浏览

objective-c - 为 NSInvocationOperation 设置多个参数

-[NSInvocationOperation initWithTarget:selector:object:]只接受一个对象作为将要调用的方法的参数传递。我想使用两个参数;我怎样才能做到这一点?

这是我的代码:

0 投票
1 回答
244 浏览

iphone - 似乎无法使用 NSArray 调用 NSInvocationOperation

我正在尝试从 url 在后台加载图像。如果我通过的只是 NSUrl,那么代码效果很好。如果我尝试传递带有其他变量的 NSArray,它永远不会被调用:

这段代码很好用,调用了 LoadImage2,而后者又很好地调用了 ImageLoaded2。

此代码不起作用。LoadImage 永远不会被调用:

任何人都知道为什么 LoadImage 没有被调用?

谢谢。

0 投票
1 回答
406 浏览

ios - 获取从 NSInvocationOperation 返回的结果

返回调用或方法的结果。- (id)result 返回值 方法返回的对象,如果不是对象,则返回包含返回值的 NSValue 对象。如果方法或调用未完成执行,则此方法返回 nil。

我总是得到nil图像。上面的代码有什么问题?

0 投票
2 回答
451 浏览

ios - NSInvocationOperation 回调太快

我知道类似的问题已经被问过几次,但我很难弄清楚如何解决这个特定的问题。到目前为止,我所做的一切都是在主踏板上进行的。我现在发现我需要执行一个需要一些时间的操作,并且我想在操作期间在我的显示器上添加一个 HUD,并在操作完成后将其淡出。

在阅读了很多关于 GCD 的内容(并且变得很困惑)之后,我决定最简单的方法是使用 NSInvocationOperation 调用我的耗时方法并将其添加到新创建的 NSOperationQueue 中。这就是我所拥有的:

我希望这会显示 HUD,开始在地图上绘制点,然后一旦该操作完成,淡出 HUD。

相反,它会显示 HUD,开始在地图上绘制点,然后在绘制点的同时淡出 HUD。根据我的 NSLogs,在调用该方法以淡化 HUD 之前大约有四分之一秒的延迟。与此同时,点的绘制又持续了几秒钟。

我该怎么做才能让它等到地图上的绘图完成后再消失 HUD?

谢谢

编辑添加:

进行以下更改后,我几乎取得了成功:

奇怪的是,好像是先调用timeConsumingOperation,再调用showLoadingConfirmation,再调用fadeConfirmation。这是根据我在这些方法中触发的 NSLogs 得出的。

我在屏幕上看到的行为是这样的:绘制点并且地图相应地调整它的缩放(部分时间ConsumingOperation),然后HUD出现在屏幕上,然后什么都没有。所有三个 NSLog 都会立即出现,即使 showLoadingConfirmation 在 timeConsumingOperation 完成之前不会发生,并且 fadeConfirmation 似乎根本没有发生。

这看起来很奇怪,但也似乎暗示有一种方法可以在 timeConsumingOperation 完成时使某些事情发生。

我试着添加这个:

还有这个:

但它们似乎没有任何区别。

0 投票
1 回答
408 浏览

objective-c - 正确用法:NSOperation 和 NSInvocationOperation

我正在研究 NSOperation 并且我对根据我的情况实施它的正确方法有疑问。

在我的应用程序中,我想在后台执行很多操作。由于我的应用程序可以从桌面软件导入数据,因此我的数据库可能会根据情况变得非常大。有了这个,读取和分析数据可能需要几秒钟,我不希望我的 UI 在这段时间内冻结。

假设我有一堂课:

每个 heavyOp 都与 相关ClassX,因此它们属于同一类是有道理的。

我的问题和我的选择:

1)应该ClassX是一个子类NSOperation

我知道操作应该代表一项任务,但我的班级提供了 3 个不同的任务。我可以尝试使用一些自定义构造函数来控制执行,但我认为我可能打破了一个概念。

2)使用NSInvocationOperation是否正确?我不能取消它!

我知道我可以做这样的事情:

但是如果我打电话[myQueue cancelAllOperations];ClassX将不会响应,self.isCancelled因为它不存在于NSInvocationOperation.

用这样的代码强制类识别是可行的[myOp addObserver:myClassX forKeyPath:@"isCancelled" options:NSKeyValueObservingOptionNew context:nil];,但我再次认为我正在打破概念。

NSOperation3)为我的每个heavyOp方法创建一个子类ClassX

那会产生很多子类并且很难管理它,我不知道它是否正确。

那么,解决问题的正确方法是什么?任何人都可以给我建议吗?也许我对我解释的选项之一有误。如果有不清楚的地方,请询问,我会尽力解释得更好。

0 投票
1 回答
260 浏览

objective-c - 传递给 NSOperation 的 NSDictionary 在调用的方法中为 null

我正在使用下面的代码将多个值传递给 NSOperation。

我已经定义了一个 NSDictionary 但我无法在调用的方法中访问它(它总是返回 null)。

下面是我调用该方法的代码

这是我的方法定义

调用了名为method的方法,但是当我根据字典定义实际查看value1时,NSLog 始终打印为空。

我错过了什么吗?

肿瘤坏死因子

0 投票
1 回答
116 浏览

animation - 在终止前获取至少一个周期的 UIImageView 动画

我是 Objective C 和 X 代码的新手,我无法让我的 UIImageView 动画在屏幕上停留至少一个完整的周期。我将它用作自定义等待动画,用于点击按钮并发生一堆保存和处理的事情。我使用 NSOperationQueue 在单独的线程中执行这些操作。这是我的代码的第一部分:

我的动画是在 ViewDidLoad 中定义的,它被称为“myAnimation”。它是一个 UIImageView 动画,由 UIImages 数组组成。我立即将其设置为隐藏并在需要时显示它。

然后,在我的最后一个队列操作中,我有

一切似乎都运行良好,除了当这些保存操作太快时,尤其是在 iPad 上,myAnimation 无法完成 2.5 的持续时间。在隐藏动画之前,我想至少播放一次。有没有办法实现这个?

0 投票
1 回答
171 浏览

objective-c - 如何对多个 url 使用异步 NSURLConnection

首先,我认为 iPad 只有一个 NIC(或任何硬件)来处理连接。因此请求按顺序排队和服务,并且不能同时运行 2 个连接。这个猜测是真的吗?

我有UITabBar控制器,每个选项卡的视图控制器下载并解析不同的 JSON 提要 URL。我创建了一个单例类,它从单个 URL 下载提要,然后解析它并在工作完成时调用其中一个视图控制器的委托函数。为了不挂起主线程,我决定使用异步连接。

URLConnection4Target * _conn = [[URLConnection4Target alloc] initWithRequest:request delegate:self startImmediately:NO];

因此,所有选项卡都可以从同一个窗口访问(不是一个接一个地导航),并且它们对不同的提要使用不同的 URL。

我的问题是如何在单例类中设计连接以按顺序(或如果可能的话同时)为多个视图控制器提供服务。

我尝试使用NSInvocationOperation是因为我不确定如果用户单击一个选项卡并访问该NSURLConnection对象而其他视图控制器已经可以访问该对象会发生什么。

0 投票
0 回答
197 浏览

ios - 使用 nsoperation 时出现核心数据错误

我在一个并发的方法中使用了一些核心数据实体(它在一个NSInocationOperation对象中)......我收到了这个错误:

如何避免这种情况?该方法只是对核心数据值进行一些计算,没有添加新实体,没有删除实体,也没有修改任何实体......