问题标签 [performselector]

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 投票
2 回答
921 浏览

ios - 使用 performSelectorOnMainThread iOS 在调用中投射对象

如果我使用

在方法 -(void)uploadDidEnd:(id)sender

哪个对象是发送者?在调用 foo 是一个自定义类?如何在我的对象中转换此发件人?

我正在尝试投射,但我有

在通知中,我使用从发件人到 NSNotification 的强制转换,并且通知具有 object 属性,但是对于 NSThread 我没有找到。

谢谢。

0 投票
2 回答
1287 浏览

objective-c - 即使从主线程调用更新,UI 也不会更新

我已经阅读了我能找到的所有相关问题,但我仍然陷入困境,所以我希望有人能发现我的推理错误。

我正在尝试定期更新一些 UIView。为简单起见,我将代码简化为以下内容。摘要:在 viewDidLoad 中,我在一个新的后台线程上调用了一个方法。该方法调用主线程上的一个方法,该方法应该更新一些 UILabel。代码似乎工作正常:后台线程不是主线程,调用 UILabel 更新的方法在主线程上。在代码中:

在 viewDidLoad 中:

这将创建一个新的后台线程。我的方法 updateMeters(为简单起见)现在看起来像这样:

最后,updateUI 就是这样做的:

据我所知,这应该有效。但不幸的是,它没有......被注释掉dispatch_async()的结果是一样的。

0 投票
2 回答
1941 浏览

objective-c - 停止 performSelector:withObject:afterDelay for 循环

这是我试图开始工作的代码片段,但它的循环不会停止我想要的方式:

即使我将 for 循环设为有限,代码仍会继续循环。我想要的是代码执行,暂停两秒钟,然后在int值小于loopLimit我设置的值时运行循环。

有人暗示这种performSelector:withObject:afterDelay:方法可能不适合在这里使用,但我不确定为什么或在这里使用什么更好。

有什么启发性的建议吗?

0 投票
1 回答
5311 浏览

objective-c - cancelPreviousPerformRequestsWithTarget 不起作用

我在一个类中使用这个方法来启动一个动作:

为了阻止它,我正在使用:

但永远不会停止。

两个调用都在同一个类和同一个线程中实现。

我也用过这个,但没有解决:

我错过了什么?

谢谢。

- -编辑 - -

要知道我正在使用的是否是主线程:

什么时候工作正常,什么时候不总是出现在日志中是主线程。

我正在启动的选择器(startRolling 和 commitAnimations)是使用 [UIView beginAnimation:context:) 的动画

这可能是原因吗?

这里的方法:

调用 stopRolling 方法的方法是使用 performOnMainThread 调用的:

谢谢。

- 编辑 - -

我已经根据建议修改了方法,但仍然无法正常工作:

我观察到,如果用户在执行图像之间的转换时点击屏幕,则当它不起作用时。但是,如果用户在图像出现在屏幕上时(2 秒内)点击屏幕,一切正常。

始终在主线程上。

:( 我很绝望,这使得程序因为内存而崩溃。

- 编辑 -

最后,我使用 BOOL 标志解决了问题。但我认为这是一个糟糕的解决方案,因为这必须在没有的情况下工作。正在执行动画时发生了一些奇怪的事情,因为这仅在未执行动画时才有效。

这适用于所有情况:

感谢一切。

0 投票
2 回答
544 浏览

ios5 - 何时以及为何使用 performSelector - iOS

我一直在试图弄清楚为什么以及如何使用 performSelector。我确实遇到过Apple Docs。但是,我无法完全理解它。

有人能帮我解释一下吗?

0 投票
2 回答
132 浏览

objective-c - 延迟从连接内更新的标签:didReceiveData:data

我正在开发一个下载管理器,我正在尝试更新指示下载速度和剩余百分比的标签。

它在 connection:didReceiveData 中更新得太快了,并且使用 performSelector 并从该方法延迟它不起作用(它只是在开始之前延迟了很长时间)。

我应该怎么做才能更新下载速度或剩余百分比等内容?

0 投票
3 回答
2541 浏览

iphone - 客观C/Iphone开发中Perform Selector有什么用

在目标 C 中执行选择器有什么用?你能告诉我执行选择器和响应选择器之间的区别吗?

0 投票
2 回答
997 浏览

ios - 在 viewDidLoad() 和 eventmethod() 中调用 performSelectorOnMainThread() 有什么区别?(IOS)

}

这段代码,在 LONG WORK 结束之前查看显示 UI WORK。所以我可以有一个线程效果。

在此代码中,在 LONG WORK 结束后查看显示 UI WORK。所以我不能有线程效果。为什么?我使用 (performSelectorInBackground:withObject:) 而不是 (performSelectorOnMainThread withObject:waitUntilDone:) 。但这比不使用线程要慢。

我想在事件方法调用中产生线程效果。有什么好办法吗?请帮帮我!

0 投票
1 回答
114 浏览

iphone - 如果对象在其方法执行完成之前被释放怎么办

我有一个视图控制器,它触发一个 Web 服务获取一些数据并将结果存储在核心数据中,然后在不同的线程中解析..

我有很多数据,所以解析需要一些时间,并且不确定在导航中弹出 viewController 是否会停止我的解析方法的执行,

如果它在两者之间停止执行,那么我的核心数据数据库将被损坏,所以它会在释放我的 viewController 对象之前停止执行或执行选择器

0 投票
1 回答
3334 浏览

objective-c - 使用 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]] 让预定的选择器触发

在我的应用程序中,有时我会使用performSelector.

在某些情况下,在处理 UI 操作时,我需要等待所有当前计划的选择器触发。

我可以将我的代码放在另一种方法中,并安排它使用足够高performSelector:target:argument:order:modes:order值以确保它会最后触发,但我认为这会是一个丑陋的解决方案是有原因的。

所以我发送[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]],它似乎就像我需要的那样工作。

不过,我不确定这是否是让运行循环滚动一次迭代的合法方式。此外,这种方法是否有任何潜在的麻烦?