线程解决方案,如 (animateWithDuration) 完成:^

Posted

技术标签:

【中文标题】线程解决方案,如 (animateWithDuration) 完成:^【英文标题】:Thread solution, like (animateWithDuration) completion:^ 【发布时间】:2017-01-03 14:19:31 【问题描述】:

我有一些动画(非常非常轻微地)不同步(延迟),因为它们之前正在完成工作。

我已通过将动画 [第 3 部分] 放入虚拟“animateWithDuration”方法 (duration:0) 的完成:^ 方法来解决此问题。

完美地工作如下:

[method]


    [Part 1. create series of UIImages (using CGContext) and UIImageViews /]


    [Part 2. UNNECESSARY animateWithDuration]

            completion:^(BOOL finished) 

                [Part 3. Record NSDate /]
                [Part 3. Run animations based on NSDate start time /]

            

    [/Part 2.]


[/method]

我应该用什么来代替这个不必要的“animateWithDuration”?有没有同样简单但正确的方法?

(我不想在 [第 1 部分] 中使用线程块,这将需要我使用 __block 指针。如果可能的话,我想要一个与上述一样简单的解决方案。)

【问题讨论】:

也许只是创建一个函数,在虚拟动画中运行该代码,并在一个块中持续时间。 编写简单的代码!=编写正确的代码。您找到了解决问题的方法并且它有效,但您应该始终为它选择更好的做法,即使它需要更多的努力和时间。我知道您已经要求类似的答案,但您应该记住,您的答案是具有适当线程的解决方案,而不是这些。 不太清楚你在这里试图同步什么或你所说的“运行动画”是什么意思,但NSDate 可能是错误的工具(线程肯定是错误的工具,虽然它是这里不清楚你所说的“线程”是什么意思)。如果您尝试显示与挂钟同步的图像(例如与音频保持同步),那么您需要像 AVPlayer 或 CADisplayLink 这样的实时系统之一。可能有助于解释您要解决的问题。你可能只需要一个动画交易。 你能发布你认为应该如何编写的实际代码吗?此外,如果第 1 部分花费了很长时间并且在 main 上运行,那么您的应用甚至在动画之前就出现了问题。 【参考方案1】:

我决定使用

dispatch_group_t 
and
dispatch_queue_t

我希望有一些更简单、更快捷的方法,但至少这会奏效。 感谢您的 cmets 和建议。

【讨论】:

以上是关于线程解决方案,如 (animateWithDuration) 完成:^的主要内容,如果未能解决你的问题,请参考以下文章

我如何用 pafy 为进度条制作线程

SimpleDateFormat线程安全问题和解决方案

看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!

集群中多线程如何处理表中的数据的问题

Windows 如何为线程挑选内存?

spring如何解决多线程的数据操作