本文將圍繞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