本文将围绕2个问题展开。ios
- iOS10 CAAnimationDelegate适配xcode
- 条件编译动画
一、iOS10 CAAnimationDelegate适配代理
缘由是动画的代理没有遵循协议。解决以下:code
觉得万事大吉?在X-code7打开运行编译报错。ios10以前写动画的协议方法,不须要去遵循系统的动画代理。io
二、此问题引伸开来的条件编译。利用__IPHONE_OS_VERSION_MAX_ALLOWED系统宏进行条件编译编译
在@interface前加上。class
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 @interface ViewController () <CAAnimationDelegate> #else @interface ViewController () #endif
可是在X-code7运行依旧报错,缘由是由于__IPHONE_10_0在之前版本的X-code中根本不存在。#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0这句在xcode8以前的版本上运行,是个恒成立的条件。。。条件编译的限制也就失去了原本的意义。__IPHONE_10_0这个宏也就是一个数字:100000。因此把__IPHONE_10_0用100000代替酒能够解决适配Ios10以前的条件编译了。可是这样也有可能有问题,万一每次升级须要检查这个宏的值有没有变化。object