成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS開發(fā) 關(guān)于SEL的簡(jiǎn)單總結(jié)

移動(dòng)開發(fā) iOS
SEL就是對(duì)方法的一種包裝。包裝的SEL類型數(shù)據(jù)它對(duì)應(yīng)相應(yīng)的方法地址,找到方法地址就可以調(diào)用方法。在內(nèi)存中每個(gè)類的方法都存儲(chǔ)在類對(duì)象中,每個(gè)方法都有一個(gè)與之對(duì)應(yīng)的SEL類型的數(shù)據(jù),根據(jù)一個(gè)SEL數(shù)據(jù)就可以找到對(duì)應(yīng)的方法地址,進(jìn)而調(diào)用方法。

[[109777]]

  1. @interface Person : NSObject 
  2.  
  3. + (void)test1; 
  4. - (void)test2; 
  5. @end 
  6.  
  7.     // 根據(jù).h文件中定義的Person類和方法 執(zhí)行完這行代碼 在內(nèi)存中如下 
  8.     Person *person = [[Person alloc] init]; 

SEL就是對(duì)方法的一種包裝。包裝的SEL類型數(shù)據(jù)它對(duì)應(yīng)相應(yīng)的方法地址,找到方法地址就可以調(diào)用方法

1.方法的存儲(chǔ)位置

  • 在內(nèi)存中每個(gè)類的方法都存儲(chǔ)在類對(duì)象中
  • 每個(gè)方法都有一個(gè)與之對(duì)應(yīng)的SEL類型的數(shù)據(jù)
  • 根據(jù)一個(gè)SEL數(shù)據(jù)就可以找到對(duì)應(yīng)的方法地址,進(jìn)而調(diào)用方法
  • SEL類型的定義:  typedef struct objc_selector *SEL

2.SEL對(duì)象的創(chuàng)建

  1. SEL s1 = @selector(test1);   // 將test1方法包裝成SEL對(duì)象  
  2. SEL s2 = NSSelectorFromString(@"test1");   // 將一個(gè)字符串方法轉(zhuǎn)換成為SEL對(duì)象 

3.SEL對(duì)象的其他用法

  1. // 將SEL對(duì)象轉(zhuǎn)換為NSString對(duì)象   
  2. NSString *str = NSStringFromSelector(@selector(test)); 
  3.  
  4.  Person *p = [Person new]; 
  5.  
  6. // 調(diào)用對(duì)象p的test方法 
  7. [p performSelector:@selector(test)];
  1. /******************************* Person.h文件 **********************************/ 
  2.  
  3. #import <Foundation/Foundation.h> 
  4.  
  5. @interface Person : NSObject 
  6.  
  7. - (void)test1; 
  8.  
  9. - (void)test2:(NSString *)str; 
  10.  
  11. @end 
  12.  
  13. /******************************* Person.m文件 **********************************/ 
  14.  
  15. #import "Person.h" 
  16.  
  17. @implementation Person 
  18.  
  19. - (void)test1 
  20.     NSLog(@"無(wú)參數(shù)的對(duì)象方法"); 
  21.  
  22. - (void)test2:(NSString *)str 
  23.     NSLog(@"帶有參數(shù)的方法%@",str); 
  24. @end 
  25.  
  26. /******************************* main.m文件 **********************************/ 
  27.  
  28. #import "Person.h" 
  29. #import <Foundation/Foundation.h> 
  30.  
  31. /* 
  32.  調(diào)用方法有兩種方式: 
  33.  1.直接通過(guò)方法名來(lái)調(diào)用 
  34.  2.間接的通過(guò)SEL數(shù)據(jù)來(lái)調(diào)用 
  35.  */ 
  36.  
  37. int main(int argc, const char * argv[]) 
  38.     Person *person = [[Person alloc] init]; 
  39.      
  40.     // 1.執(zhí)行這行代碼的時(shí)候會(huì)把test2包裝成SEL類型的數(shù)據(jù) 
  41.     // 2.然后根據(jù)SEL數(shù)據(jù)找到對(duì)應(yīng)的方法地址(比較耗性能但系統(tǒng)會(huì)有緩存) 
  42.     // 3.在根據(jù)方法地址調(diào)用對(duì)應(yīng)的方法 
  43.      
  44.     [person test1]; 
  45.      
  46.     // 將方法直接包裝成SEL數(shù)據(jù)類型來(lái)調(diào)用 withObject:傳入的參數(shù) 
  47.     [person performSelector:@selector(test1)]; 
  48.     [person performSelector:@selector(test2:) withObject:@"傳入?yún)?shù)"]; 
  49.      
  50.     return 0; 

 

責(zé)任編輯:閆佳明 來(lái)源: cnblogs
相關(guān)推薦

2014-06-10 13:44:58

iOSUIImage知識(shí)點(diǎn)

2011-05-11 10:02:37

iOS

2013-06-03 16:27:49

iOS開發(fā)移動(dòng)應(yīng)用移動(dòng)開發(fā)

2013-09-12 15:37:09

iOS開發(fā)流程

2011-08-31 10:26:38

MTK驅(qū)動(dòng)開發(fā)

2017-04-12 10:04:18

Scrum實(shí)踐終結(jié)

2017-09-06 12:42:45

AndroidGradle開發(fā)技巧

2017-08-24 14:11:20

iOSSocial FramOpenShare

2011-09-02 19:12:59

IOS應(yīng)用Sqlite數(shù)據(jù)庫(kù)

2013-01-06 09:52:43

SQLite

2013-04-09 16:04:06

iOS開發(fā)SQLite知識(shí)總結(jié)

2011-08-05 10:13:45

iPhone開發(fā)工具 Cocoa Xcode

2017-01-19 21:45:27

iOS開發(fā)者賬號(hào)

2013-04-01 17:05:28

2017-11-06 16:00:05

iOS安卓發(fā)送原圖

2010-08-05 13:58:33

NFS故障

2011-08-18 11:19:13

IOS開發(fā)Core Plot S

2018-07-12 11:44:38

數(shù)據(jù)庫(kù)MySQL變量分類

2015-09-09 10:20:00

php緩存技術(shù)

2017-04-26 15:30:31

PHP錯(cuò)誤機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99久久精品免费看国产四区 | 欧美三级视频在线观看 | 夜夜干夜夜操 | 日韩一二区 | 日日碰狠狠躁久久躁96avv | 欧美日韩亚洲一区 | 在线观看中文字幕 | 91精品国产综合久久久亚洲 | 亚洲精品久久久久久久不卡四虎 | 精品99爱视频在线观看 | 一区在线观看 | 国产ts人妖系列高潮 | 亚洲国产一区二区三区在线观看 | 欧美精品综合在线 | 黄网站免费在线看 | 久久免费大片 | 成人在线免费视频 | 国产一二三区免费视频 | 99av成人精品国语自产拍 | 在线看亚洲 | 国产精品黄色 | 亚洲精品18 | 久久久久久久国产精品视频 | 欧美福利影院 | 淫片一级国产 | 国产一区二区在线免费观看 | 丁香婷婷久久久综合精品国产 | 最新中文字幕一区 | 精品视频一区二区三区在线观看 | 日韩男人天堂 | www日本高清| 精品熟人一区二区三区四区 | 免费久久久| 91资源在线 | 老司机深夜福利网站 | 免费一级欧美在线观看视频 | 成年男女免费视频网站 | 日本成人在线免费视频 | 日韩中文在线视频 | 国产精品一区二区三区四区 | 精品日韩电影 |