作者Blueshiva (龙野南云)
看板MacDev
标题Re: [心得] 根据不同的系统版本,采用不同的底层实作
时间Sat Jan 12 01:48:12 2013
: 推 wfgh:不能先判断respondToSelector:@selector(CGColor) 01/12 01:21
: → wfgh:再performSelector:@selector(CGColor)吗 01/12 01:22
其实当初会遇到这问题,是我白目的用了10.8 SDK编译,然後又直接呼叫 CGColor,然後
在10.7之前的系统就直接爆掉了...
所以问题要分成这样看:
如果直接加 category
旧SDK 新 SDK
旧runtime OK Warning (覆盖已有的实作)
新runtime OK Warning (覆盖已有的实作)
如果不加 category 直接呼叫
旧SDK 新 SDK
旧runtime Error Crash
新runtime Error OK
先判断respondToSelector:@selector(CGColor)再呼叫
performSelector:@selector(CGColor),只是避免掉compiler warning而已 @.@
其实另外一个方法是,category 里面的 method 改名,例如改叫 CGColorFromCategory
之类的,然後全部都呼叫 category 的 method,只是日後如果决定只支援 10.8 之後的
系统,就要把相关的 method 呼叫全部改掉,麻烦,维护上也要多费工夫...
--
Luna quieres ser madre
y no encuentras querer
que te haga mujer
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.104.95.143
1F:推 wfgh:原来如此,谢谢详细的解说 01/12 20:02