SEL

//

//  main.m

//  08-SEL

//

//  Created by apple on 13-8-8.

//  Copyright (c) 2013年 itcast. All rights reserved.

//

/*

SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址。找到方法地址就可以调用方法

其实消息就是SEL

*/

#import <Foundation/Foundation.h>

#import "Person.h"

int main()

{

Person *p = [[Person alloc] init];

[p test2];

//    NSString *name = @"test2";

//

//    SEL s = NSSelectorFromString(name);

//

//    [p performSelector:s];

// 间接调用test2方法

//[p performSelector:@selector(test2)];

//[p test3:@"123"];

//    SEL s = @selector(test3:);

//

//    [p performSelector:s withObject:@"456"];

//[p test2];

// 1.把test2包装成SEL类型的数据

// 2.根据SEL数据找到对应的方法地址

// 3.根据方法地址调用对应的方法

return 0;

}

时间: 2024-11-15 17:49:41

SEL的相关文章

Description方法&amp;&amp;SEL类型

description方法和sel数据类型 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 使用@%打

Description方法&amp;&amp;SEL数据类型

description方法和sel数据类型 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 使用@%打

OC语言description方法和sel

一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 使用@%打印对象如(“@%”,P)默认打印输出为<类名

SEL 类型 和 类的反射

SEL 类型 SEL 类型是用来描述一个方法的,可以理解为SEL是方法的指针.该SEL类型类似于Java中的Method类.OC中可以通过两种方法来获得SEL类型. @selector(methodName) : NSSelectorFromString(@"methodName") ; 反射的方法 -(BOOL) isKindOfClass : (class) clazz isKindOfClass 方法用来判断当前对象是否是一个类或者其子类的实例 [cat isKindOfClas

Object-c 中的 SEL

SEL 在Objective-C中,SEL是选择器(selector)的一个类型.选择器就是指向方法的一个指针,读者可以简单理解为程序运行到这里就会执行指定的方法,可以这样定义一个选择器: SEL action = [button action]; 我们这样使用一个选择器,下面的选择器都叫做action: [Foo action] [Bar action] 在Target-Action 模式(Cocoa 程序中的一种常用模式)中:Target 指定了一个类,Action指定一个方法.在一个对象上

自定义构造、description方法、SEL

[Objective-C]07-自定义构造方法和description方法 // 构造方法:用来初始化对象的方法,是个对象方法,”-"开头// 重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值/* 重写构造方法的注意点1.先调用父类的构造方法([super init])2.再进行子类内部成员变量的初始化 */ // 重写-init方法//- (id)init//{//    // 1.一定要调用回super的init方法:初始化父类中声明的一些成员变量和其他属性//    se

SEL方法选择器

在Objective-C中,选择器(selector)有两个意思. 一是指在代码中的方法的名称.二是指在编译是用于替换方法名称的唯一的标识符.编译后的选择器的为SEL类型.所有名称相同的方法拥有同一个选择器.通过使用选择器可以调用对象的一个方法.这是Cocoa中目标-动作这一模式能得以实现的基础. 方法和选择器 出于效率的考虑,编译后的代码中并不是使用ASCII码表示的方法名称来作为方法的选择器的.编译器会把每一个方法的名称写入到一张表中:然后用唯一的一个标识符与之结对,这样来表示运行时的方法.

类的本质、description方法、SEL、NSLog输出增强

一.类的本质 1.类也是个对象 其实类也是一个对象,是Class类型的对象,简称“类对象” Class类型的定义 typedef struct objc_class *Class; 类名就代表着类对象,每个类只有一个类对象 2.+load和+initialize +load 在程序启动的时候会加载所有的类和分类,并调用所有类和分类的+load方法 先加载父类,再加载子类:也就是先调用父类的+load,再调用子类的+load 先加载元原始类,再加载分类 不管程序运行过程有没有用到这个类,都会调用+

iOS开发 关于SEL的简单总结

#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 { NSL