您好,登錄后才能下訂單哦!
方法的調用過程
方法的調用實際是發送SEL消息
SEL是對方法的一種包裝,所以說發消息,就是發送SEL數據。
將方法包裝成一個SEL類型的數據,去找對應的方法地址,找到方法地址就可以調用方法。
調用方法的過程:
a. 將test包裝成SEL
b. 根據SEL數據找到對應方法的地址
c. 根據方法地址調用對應的方法
這個操作是有緩存的,能夠提高查找效率
通過SEL掉用方法
如:
[p test2];
調用方法,也可以通過下面的方法調用:
[p performSelector:@selector(test2)];
再如:
[p test2:@”123”];
調用帶參數的方法,也可以通過下面的方法調用:
[p performSelector:@selector(test3:) withObject:@”123”];
SEL是方法的類型
實際上SEL是struct objc_selector*類型,如:
SEL s = @selector(test); SEL s2 = NSSelectorFromString(@”test”);
每個方法中都有一個_cmd代表當前方法,如下面的方法將打印方法名:
- (void) test2 { NSString * str = NSStringFromSelector(_cmd); NSLog(“name:%@”, str); //[self performSelector:_cmd]; //會引發無限遞歸死循環 }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。