0

一般来说,有没有办法跟踪方法的完成进度?与某种观察者或类似的东西。

我一直在寻找,但只有关于如何通过互联网请求实现它的参考资料。我知道该怎么做,但我想跟踪特定方法的进度。是否可以?

在这种情况下,我要跟踪的方法是 UISaveVideoAtPathToSavedPhotosAlbum。我不知道这是否可能。如果可能的话,我特别感兴趣。

非常感谢您的建议!!

4

3 回答 3

2

异步操作的函数/方法的进度更新有三种常见的编码模式:

  1. 异步函数/方法可以将选择器作为参数,并且可以按照文档说明调用该方法。这在简单地报告某些异步事件的完成时很有用,例如在UISaveVideoAtPathToSavedPhotosAlbum.

  2. 有一些协议(在这些协议中,您的后台进程将具有一些delegate属性,这些属性定义了哪个对象将符合协议,从而被通知关键事件或进度)。

  3. 有一些通知,其中后台进程通过NSNotificationCenter进行通知,并调用哪些对象addObserver来接收通知。

如果您正在编写自己的后台进程,则可以使用这些技术中的任何一种(我通常使用委托),但如果您使用的是一些现有的框架或第三方库,则您依赖于它们可能的任何通知/委托接口已提供。如果框架/库不提供任何这样的接口,那么你就很不走运了。

如果UISaveVideoAtPathToSavedPhotosAlbum您只有completionTargetandcompletionSelector来异步通知您该过程的完成(例如,您可以有一些UIActivityIndicatorView微调器显示保存正在进行中,然后停止您的活动指示器completionSelector),但我不认为此功能有任何临时进度界面。

于 2012-09-26T13:51:45.330 回答
2

软件中看到的许多进度指示器实际上是伪造的,或者充其量表示操作的一部分已完成而不是时间(并不总是相同)。这显然是没有可衡量的有形的东西的情况,或者在有衡量它的方法的情况下。

在这种情况下,UISaveVideoAtPathToSavedPhotosAlbum似乎无法获得部分完成的通知 - 只有完全完成。

在现代 UI 设计实践中非常明显的是,进度指示器现在通常不显示操作完成的比例。有一种观点认为,显示未显示完成比例的指标比显示错误比例的指标要好。

如果您想沿着伪造进度指示器的路线走下去,最好的办法是测量开发过程中操作所花费的时间,并在此基础上为您的进度指示器设置动画。经过几次操作后,您将能够细化估算值。显然,用户不太可能抱怨某项操作花费的时间少于进度指示器显示的时间,但他们会注意到何时花费的时间明显更多。您可能会选择超出预期并延长您的初始估计。

Apple 曾经在旧版本的 MacOSX 上启动时显示的 UI 上精确地使用了这个技巧。他们在每次连续启动时都改进了他们的估计。

于 2012-09-26T14:36:24.980 回答
1

没有通用的解决方案。这取决于相关方法的作者是否提供了一种请求回调或询问进度的方法。

从仅提供完成回调的文档看来UISaveVideoAtPathToSavedPhotosAlbum,因此无法获得定期更新。

于 2012-09-26T13:32:52.530 回答