问题标签 [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.
objective-c - NSInvocationOperation 访问错误导致崩溃
我遇到了一个大问题NSInvocationOperation
。当我在我的 iPod 4 固件 5.0.1 上运行时,一切正常。但是在我的 iPhone 4,iOS 4.1 上,它崩溃了。这是我的代码:
updateAnnotation 函数在 CustomAnnotation 类中定义:
}
不知道哪里错了?请帮我。谢谢大家!!!
objective-c - 为 NSInvocationOperation 设置多个参数
-[NSInvocationOperation initWithTarget:selector:object:]
只接受一个对象作为将要调用的方法的参数传递。我想使用两个参数;我怎样才能做到这一点?
这是我的代码:
iphone - 似乎无法使用 NSArray 调用 NSInvocationOperation
我正在尝试从 url 在后台加载图像。如果我通过的只是 NSUrl,那么代码效果很好。如果我尝试传递带有其他变量的 NSArray,它永远不会被调用:
这段代码很好用,调用了 LoadImage2,而后者又很好地调用了 ImageLoaded2。
此代码不起作用。LoadImage 永远不会被调用:
任何人都知道为什么 LoadImage 没有被调用?
谢谢。
ios - 获取从 NSInvocationOperation 返回的结果
返回调用或方法的结果。- (id)result 返回值 方法返回的对象,如果不是对象,则返回包含返回值的 NSValue 对象。如果方法或调用未完成执行,则此方法返回 nil。
我总是得到nil
图像。上面的代码有什么问题?
ios - NSInvocationOperation 回调太快
我知道类似的问题已经被问过几次,但我很难弄清楚如何解决这个特定的问题。到目前为止,我所做的一切都是在主踏板上进行的。我现在发现我需要执行一个需要一些时间的操作,并且我想在操作期间在我的显示器上添加一个 HUD,并在操作完成后将其淡出。
在阅读了很多关于 GCD 的内容(并且变得很困惑)之后,我决定最简单的方法是使用 NSInvocationOperation 调用我的耗时方法并将其添加到新创建的 NSOperationQueue 中。这就是我所拥有的:
我希望这会显示 HUD,开始在地图上绘制点,然后一旦该操作完成,淡出 HUD。
相反,它会显示 HUD,开始在地图上绘制点,然后在绘制点的同时淡出 HUD。根据我的 NSLogs,在调用该方法以淡化 HUD 之前大约有四分之一秒的延迟。与此同时,点的绘制又持续了几秒钟。
我该怎么做才能让它等到地图上的绘图完成后再消失 HUD?
谢谢
编辑添加:
进行以下更改后,我几乎取得了成功:
奇怪的是,好像是先调用timeConsumingOperation,再调用showLoadingConfirmation,再调用fadeConfirmation。这是根据我在这些方法中触发的 NSLogs 得出的。
我在屏幕上看到的行为是这样的:绘制点并且地图相应地调整它的缩放(部分时间ConsumingOperation),然后HUD出现在屏幕上,然后什么都没有。所有三个 NSLog 都会立即出现,即使 showLoadingConfirmation 在 timeConsumingOperation 完成之前不会发生,并且 fadeConfirmation 似乎根本没有发生。
这看起来很奇怪,但也似乎暗示有一种方法可以在 timeConsumingOperation 完成时使某些事情发生。
我试着添加这个:
还有这个:
但它们似乎没有任何区别。
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];
,但我再次认为我正在打破概念。
NSOperation
3)为我的每个heavyOp方法创建一个子类ClassX
?
那会产生很多子类并且很难管理它,我不知道它是否正确。
那么,解决问题的正确方法是什么?任何人都可以给我建议吗?也许我对我解释的选项之一有误。如果有不清楚的地方,请询问,我会尽力解释得更好。
objective-c - 传递给 NSOperation 的 NSDictionary 在调用的方法中为 null
我正在使用下面的代码将多个值传递给 NSOperation。
我已经定义了一个 NSDictionary 但我无法在调用的方法中访问它(它总是返回 null)。
下面是我调用该方法的代码
这是我的方法定义
调用了名为method的方法,但是当我根据字典定义实际查看value1时,NSLog 始终打印为空。
我错过了什么吗?
肿瘤坏死因子
animation - 在终止前获取至少一个周期的 UIImageView 动画
我是 Objective C 和 X 代码的新手,我无法让我的 UIImageView 动画在屏幕上停留至少一个完整的周期。我将它用作自定义等待动画,用于点击按钮并发生一堆保存和处理的事情。我使用 NSOperationQueue 在单独的线程中执行这些操作。这是我的代码的第一部分:
我的动画是在 ViewDidLoad 中定义的,它被称为“myAnimation”。它是一个 UIImageView 动画,由 UIImages 数组组成。我立即将其设置为隐藏并在需要时显示它。
然后,在我的最后一个队列操作中,我有
一切似乎都运行良好,除了当这些保存操作太快时,尤其是在 iPad 上,myAnimation 无法完成 2.5 的持续时间。在隐藏动画之前,我想至少播放一次。有没有办法实现这个?
objective-c - 如何对多个 url 使用异步 NSURLConnection
首先,我认为 iPad 只有一个 NIC(或任何硬件)来处理连接。因此请求按顺序排队和服务,并且不能同时运行 2 个连接。这个猜测是真的吗?
我有UITabBar
控制器,每个选项卡的视图控制器下载并解析不同的 JSON 提要 URL。我创建了一个单例类,它从单个 URL 下载提要,然后解析它并在工作完成时调用其中一个视图控制器的委托函数。为了不挂起主线程,我决定使用异步连接。
URLConnection4Target * _conn = [[URLConnection4Target alloc] initWithRequest:request delegate:self startImmediately:NO];
因此,所有选项卡都可以从同一个窗口访问(不是一个接一个地导航),并且它们对不同的提要使用不同的 URL。
我的问题是如何在单例类中设计连接以按顺序(或如果可能的话同时)为多个视图控制器提供服务。
我尝试使用NSInvocationOperation
是因为我不确定如果用户单击一个选项卡并访问该NSURLConnection
对象而其他视图控制器已经可以访问该对象会发生什么。
ios - 使用 nsoperation 时出现核心数据错误
我在一个并发的方法中使用了一些核心数据实体(它在一个NSInocationOperation
对象中)......我收到了这个错误:
如何避免这种情况?该方法只是对核心数据值进行一些计算,没有添加新实体,没有删除实体,也没有修改任何实体......