iOS的SEL类型
什么是SEL類型
-
SEL類型代表著方法的簽名,在類對象的方法列表中存儲著該簽名與方法代碼的對應(yīng)關(guān)系
-
每個(gè)類的方法列表都存儲在類對象中
-
每個(gè)方法有一個(gè)與之對應(yīng)的SEL類型的對象
-
根據(jù)一個(gè)SEL對象就可以找到方法的地址,進(jìn)而調(diào)用方法
SEL類型的定義
typedef struct objc_selector *SEL [p test];- 首先把test這個(gè)方法名包裝成SEL類型的數(shù)據(jù)
- 根據(jù)SEL類型到該類的類對象上去找對應(yīng)的方法的代碼,如果找到則執(zhí)行改代碼,如果沒有找到根據(jù)類對象上的父類對象指針,去父類的類對象中查找,如果找到了則執(zhí)行,如果沒有找到,一直往上找,直到基類(NSObject), 如果都沒有找到就報(bào)錯注意:在這個(gè)操作中有緩存,第一次找到的時(shí)候是一個(gè)一個(gè)的找,之后再用到的時(shí)候就直接使用
SEL類型的作用
- 配合對象、類來檢查對象、類中有沒有實(shí)現(xiàn)一個(gè)方法
注:
如果通過對象調(diào)用該方法則判斷對象方法的實(shí)現(xiàn)
如果通過類調(diào)用該方法則判斷有沒有類方法的實(shí)現(xiàn)
- 配合對象或者類來調(diào)用某一個(gè)SEL方法
- 配合對象將SEL類型作為方法的形參
總結(jié)
- 上一篇: python xls文件转为csv
- 下一篇: 富媒体广告投放的一些经验