Re: [心得] 根據不同的系統版本,採用不同的底層實作
: 推 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
推
01/12 20:02, , 1F
01/12 20:02, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章