看板 MacDev 關於我們 聯絡資訊
: 推 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
wfgh:原來如此,謝謝詳細的解說 01/12 20:02