SEL类型】的更多相关文章

SEL selAction =NSSelectorFromString([actionArrayobjectAtIndex:indexArray]); [item addTarget:self action:selAction]; Objective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的.我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的.就是 说,不管是超类还是子类,不管是有没有超类和…
1.SEL类型的第一个作用, 配合对象/类来检查对象/类中有没有实现某一个方法 SEL sel = @selector(setAge:); Person *p = [Person new]; // 判断p对象中有没有实现-号开头的setAge:方法 // 如果P对象实现了setAge:方法那么就会返回YES // 如果P对象没有实现setAge:方法那么就会返回NO BOOL flag = [p respondsToSelector:sel]; NSLog(@"flag = %i",…
description方法 #import "Person.h" @implementation Person - (void) setAge : (int) age { _age = age; } /** 决定了实例对象的输出结果 **/ - (NSString *) description { return [NSString stringWithFormat : @"age=%i", _age]; } /** 决定了类对象的输出结果 **/ + (NSStri…
发现非常多刚開始学习的人无法区分bool和BOOL及class类型,今天闲来无事.写个博文做个区分 1. bool是C语言的布尔类型.有true和false,BOOL是Objective C 语言的布尔类型.有YES和NO,由于OC能够跟C混编,所以bool和BOOL能够同一时候出如今代码中 2. BOOL深入解析: BOOL实际上是带符号的字符类型,存储空间为8位,所以假设把一个32位的整数赋给BOOL.仅仅会取末8位. BOOL类型中YES定义为1,NO定义为0,在内存存数据时,并不会存YE…
1.什么是SEL类型 SEL类型代表着方法的签名,在类对象的方法列表中存储着该签名与方法代码的对应关系 每个类的方法列表都存储在类对象中 每个方法都有一个与之对应的SEL类型的对象 根据一个SEL对象就可以找到方法的地址,进而调用方法 SEL类型的定义 typedef struct objc_selector *SEL; 首先把test这个方法名包装成sel类型的数据 根据SEL数据到该类的类对象中,去找对应的方法的代码,如果找到了就执行该代码 如果没有找到根据类对象上的父类的类对象指针,去父类…
1.SEL类型 例子: SEL say;        SEL skin; Objective-C 在编译的时候, 会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个 ID,这个 ID 就是 SEL 类型的.我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的 ID 都是相同的.就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同 那么 ID 就是一样的. 在 程序执行的时候,我们可以方便的通过方法的名字,获取到方法的 ID 也就是我们所说的…
 id id是指向Objective-C对象的指针,等价于C语言中的void*,可以映射任何对象指针指向他,或者映射它指向其他的对象.常见的id类型就是类的delegate属性. SEL SEL类型是Objective-C用来定义方法的关键字,但却从不属于任何类实例,其值是通过@selector进行计算,可以把她当做一个函数指针来使用,但实际上的类型是const char*.SEL类系可以在编译时通过@selector()直接创建,也可以用NSSelectorFromString()函数创建,这…
Object-C(以后简称OC)中有id类型,相对于明确定义类型的静态类型,称为动态类型. 使用动态类型,配合多态(不同类型拥有同名方法),动态绑定(运行时决定实际调用的方法)可以将很多判断延迟到运行时决定,比如运行时才决定对象是某个类型,决定调用哪个类型的方法等.这样提高了灵活性,但是同样带来了风险,所以和支持动态类型的其他面向对象的语言一样,需要提供机制来做运行时判断,这样可以一定程度规避运行时错误. 看到一个动态类型的实例对象,我们都会习惯提出的问题: 1. 这个对象是属于某个类么?或者这…
/* 静态类型: 变量的类型在编译之时就被确定下来. 动态类型: 对象的类型由对象的内存里的某个结构数据来决定它是什么类型, 而不是在编译之时就被确定下来的数据类型. 对象的类型只有在运行时才知道. oc中的所有对象都有一个共同的基类(根类):NSObject oc的动态类型特性完全由NSObject这个类来提供. 分析: NSObject类的一个成员变量: Class isa;  实际上是一个结构体指针类型 typedef struct objc_class * Class; 结构体如下: s…
OC 动态类型,动态绑定,动态加载 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有 动态类型(Dynamic typing) 动态绑定(Dynamic binding) 动态加载(Dynamic loading) 动态类型:程序直到执行时才能确定所属的类. id 数据类型 id 通用的对象类型,可以存储任意类型的对象,id后面没有号,它本身就是个指针 类似于void ,但只可以指向对象类型 静态类型与动态类型 编译期检查与运行时检查 静态类型在编译期就能检查出错误…