2010-08-13 82 views
3

在我的iOS冒险,I got really into blocks,因为它们是UIViewAnimation“Animate With Blocks”,这是推荐的方式来做UIView动画所必需的。当然,这会导致不向后兼容的代码。我意识到这个问题有一个主观的组成部分,但在什么时候使用iOS 4.0代码只是一个好主意?或者差分代码是一个好主意,在objective-c中如何实现呢?iPhone 4.0操作系统,块

我现在面临重做我的iOS 3.0代码,这是一个痛苦的任务:我应该只是保留我的“块”代码,直到世界前进?

回答

5

请参阅Plausible Blocks将块运行时间的端口设置为10.5/iPhone OS 3.虽然您必须在3.0上实现并将相关的动画方法添加到UIView的元类,但这可能比重写代码更容易(提示: class_addMethod())。

根据采用情况(特别是考虑到iPad仍然停留在3.2.1),我认为我们不会再放弃OS 6支持6至9个月。

使用基于块的动画API复制setAnimationWillStartSelector:也没有简单的方法。我用它来将声音同步到动画中(你不能只是播放声音,因为直到视图布局/图像加载完成后动画才会启动)。

+0

伟大的答案,你打了一些点,我根本不知道,就像缺乏'setAnimationWillStartSelector' ...我真的没有得到块的痴迷。一方面他们非常可爱,但另一方面,他们几乎坚持难以阅读的内联代码。显然,你可以调用方法... – 2010-08-13 18:53:22

+0

另一个问题是:弃用的方法会持续多久(从历史上类似的情况来判断)? – 2010-08-13 22:14:29

+0

“普通”动画实际上还没有被弃用,我至少在iOS 5之前(即它们可能从SDK中删除OS 3支持)放弃之前,它会被删除。如果你使用无警告的版本,那么你的代码中会有很多#ifs(因为模拟器建立的是min OS = base SDK),所以当你删除相关的库时,它应该会自动停止使用已弃用的函数无论如何, – 2010-08-15 22:17:03