UIAppearance 使用 proxy 的办法带来的一个主要问题是,很难知道 selector 是不是真正可以用的。
在 iOS 7 上, UIAppearance 现在返回的是 instancetype,使得代码补全可以正常工作了.
要想知道哪些方法可以应用于 UIAppearance
,你得去头文件中找:
$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/
Developer/SDKs/iPhoneOS*.sdk/System/Library/Frameworks/UIKit.framework/Headers
$ grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'
UIAppearance
会在方法签名中查找 UI_APPEARANCE_SELECTOR
宏。任何有这个注解的方法都可以被 appearance
proxy 使用。