码迷,mamicode.com
首页 > 移动开发 > 详细

IOS基础之 (十五)知识点

时间:2016-04-23 01:27:55      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

一 SEL

1. 方法的存储位置

每个类的方法地址列表都存储在类对象中。

每个方法都有一个与之对应的SEL类型的对象。

根据一个SEL对象就可以找到方法的地址,进而调用方法。

 

Person.h

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface Person : NSObject
 4 
 5 + (void) test1;
 6 
 7 - (void) test2;
 8 
 9 - (void )test3:(NSString *) abc;
10 
11 @end

 

Person.m

 1 #import "Person.h"
 2 
 3 @implementation Person
 4 
 5 + (void)test1{
 6     NSLog(@"调用方法test1 ---\n");
 7 }
 8 
 9 - (void)test2{
10     NSLog(@"调用方法test2 ---\n");
11 }
12 
13 - (void)test3:(NSString *)param1{
14     NSLog(@"调用方法test3 ---%@", param1);
15 }
16 
17 @end

 

main.m

1 [p test2];
2     
3 [p performSelector:@selector(test2)];

第1行 第一种方式:直接通过p对象调用test2方法。

第2行 第二种方式:间接调用 test2方法。

1)把test2包装成SEL类型的数据。

2)根据SEL数据找到对应的方法地址。

3)根据方法地址调用对应的方法。

 

1 [p test3:@"123"];
2 
3 [p performSelector:@selector(test3:) withObject:@"123"];
4 

第1行:p 类直接调用带参数的方法test3.

第3行: p类间接调用带参数的方法 test3,注意间接调用带参数的方法时,使用 @selector(方法:)的形式调用。

 

1 NSString *name = @"test2";
2 SEL s2 = NSSelectorFromString(name);
3 NSLog(@"%p" , s);
4 NSLog(@"%p" , s2);

 

 

 

 

 

 

 

IOS基础之 (十五)知识点

标签:

原文地址:http://www.cnblogs.com/wangshuo1/p/5423370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!