生活随笔
收集整理的這篇文章主要介紹了
iOS开发之SEL用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@interface?Person?:?NSObject??+?(void)test1;?-?(void)test2;?@end???????????Person?*person?=?[[Person?alloc]?init];?
SEL就是對方法的一種包裝。包裝的SEL類型數據它對應相應的方法地址,找到方法地址就可以調用方法
1.方法的存儲位置
- 在內存中每個類的方法都存儲在類對象中
- 每個方法都有一個與之對應的SEL類型的數據
- 根據一個SEL數據就可以找到對應的方法地址,進而調用方法
- SEL類型的定義:? typedef struct objc_selector *SEL
2.SEL對象的創建
SEL?s1?=?@selector(test1);??SEL?s2?=?NSSelectorFromString(@"test1");??
3.SEL對象的其他用法
?NSString?*str?=?NSStringFromSelector(@selector(test));?? Person?*p?=?[Person?new];???[p?performSelector:@selector(test)];
??#import?<Foundation/Foundation.h>??@interface?Person?:?NSObject??-?(void)test1;??-?(void)test2:(NSString?*)str;??@end????#import?"Person.h"??@implementation?Person??-?(void)test1?{?????NSLog(@"無參數的對象方法");?}??-?(void)test2:(NSString?*)str?{?????NSLog(@"帶有參數的方法%@",str);?}?@end????#import?"Person.h"?#import?<Foundation/Foundation.h>????????int?main(int?argc,?const?char?*?argv[])?{?????Person?*person?=?[[Person?alloc]?init];??????????????????????????????[person?test1];???????????????[person?performSelector:@selector(test1)];?????[person?performSelector:@selector(test2:)?withObject:@"傳入參數"];??????????return?0;?}
總結
以上是生活随笔為你收集整理的iOS开发之SEL用法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。