Re: [心得] 根據不同的系統版本,採用不同的底層實作

看板MacDev作者 (龍野南雲)時間12年前 (2013/01/12 01:48), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
: 推 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
文章代碼(AID): #1Gy51VL9 (MacDev)
文章代碼(AID): #1Gy51VL9 (MacDev)