方法的調(diào)用過(guò)程
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到集賢網(wǎng)站設(shè)計(jì)與集賢網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋集賢地區(qū)。
方法的調(diào)用實(shí)際是發(fā)送SEL消息
SEL是對(duì)方法的一種包裝,所以說(shuō)發(fā)消息,就是發(fā)送SEL數(shù)據(jù)。
將方法包裝成一個(gè)SEL類(lèi)型的數(shù)據(jù),去找對(duì)應(yīng)的方法地址,找到方法地址就可以調(diào)用方法。
調(diào)用方法的過(guò)程:
a. 將test包裝成SEL
b. 根據(jù)SEL數(shù)據(jù)找到對(duì)應(yīng)方法的地址
c. 根據(jù)方法地址調(diào)用對(duì)應(yīng)的方法
這個(gè)操作是有緩存的,能夠提高查找效率
通過(guò)SEL掉用方法
如:
[p test2];
調(diào)用方法,也可以通過(guò)下面的方法調(diào)用:
[p performSelector:@selector(test2)];
再如:
[p test2:@”123”];
調(diào)用帶參數(shù)的方法,也可以通過(guò)下面的方法調(diào)用:
[p performSelector:@selector(test3:) withObject:@”123”];
SEL是方法的類(lèi)型
實(shí)際上SEL是struct objc_selector*類(lèi)型,如:
SEL s = @selector(test); SEL s2 = NSSelectorFromString(@”test”);
每個(gè)方法中都有一個(gè)_cmd代表當(dāng)前方法,如下面的方法將打印方法名:
- (void) test2 { NSString * str = NSStringFromSelector(_cmd); NSLog(“name:%@”, str); //[self performSelector:_cmd]; //會(huì)引發(fā)無(wú)限遞歸死循環(huán) }