OC的SEL和id

SEL s2 = @selector(eat:);

[ani performSelector:s2 withObject:@"一块沾有粑粑的棒棒糖"];

[ani performSelector:@selector(eat:andFoodName:)

withObject:@"班长养的恶狗"withObject:@"一块沾有粑粑的棒棒糖"];

SEL(是一个包含地址的类型)

22)id类型:

NSObject和id类型都可以指向任何对象

NSObject会进行编译时检查(需要强制类型转换)

id不需要强制类型转换,id可以直接使用

编译器看到id类型,认为是动态类型,不在检查类型

23)多态:

父类不能访问子类方法

多态的概念:不同的对象以自己的方式响应相同名称的能力称为多态

体现出来:父类的指针指向了子类的对象

多态的条件:1)有继承关系

2)有方法重写 (子类把父类的同名方法给重写了)

多态的使用注意:

1)使用子类的方法如果父类中没有此方法则使用子类强制类型转换

类对象的获取方法:

类对象属于Class类型

1)通过实例对象来获取

Class c1 = [d class];

Class c2 = [d1 class];

2)通过类名来获取类对象

Class c3 = [Dog class];

NSLog("%p", c3);

24)构造方法:

new方法的内部会分别调用两个方法类完成3件事情:

1)使用alloc方法来分配存储空间(返回分配的对象);

2)使用init方法来对对象进行初始化;

3)返回对象的首地址

init是一个对象方法

[Person alloc] 的时候,内存已经被清0(其中的属性被0初始化)

OC构造方法,学习哪些内容:

主要学习如何重写构造方法,让对象创建成功后,就有初始的值

super指代的是父类对象

25)自定义构造方法:

1)是一个对象方法:

2)返回是id类型(instancetype)

3)方法名一定要以 initWith

-(instancetype)initWithName:(NSString *)name andAge:(int)age{...}

Person *p1 = [Person alloc] initWithName:@"张三丰"andAge:

时间: 2024-10-13 19:12:41

OC的SEL和id的相关文章

黑马程序员——点语法、description、SEL、id使用

黑马程序员——点语法.description.SEL.id使用 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 点语法介绍与使用 **p.age;** 对象.属性名 注意:此时,(对象.属性名)并不是直接访问实例变量.而是看到点语法后,会帮我们自动替换成p.age=18-替换->  [p setAge:18]; ************************* int a=p.age;//调用get方法 注意:当看到p.age出现在等号右

OC中SEL,类别,继承,协议的使用

1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明SEL的使用. 直接通过方法名来调用,我们先新建一个Student类,并在其中定义一个名叫Test的对象方法.并定义一个输出语句: -(void)test { NSLog(@"这是SEL的测试方法"); } 我们在Main方法中通过SEL调用就会输出以上结果,如下: SEL s = @se

OC语言--SEL类型小记

SEL类型 1 @selector();函数 示例代码: SEL sel = @selector(bark);//把oc的方法名转化为选择器类型SEL //检测判断sel选择器代表的方法,在xiaohong对象所属类中有没有实现 if ([xiaohong respondsToSelector:sel]) { //调用的效果等价于 [xiaohong bark]; [xiaohong performSelector:sel];//执行sel所代表的方法 }else{ NSLog(@"函数没有实现

黑马程序员————OC中点语法、id类型和构造方法

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- id:万能指针(内部已经包含*),能指向任何OC对象,只能使用于OC对象   id == NSObject * 构造方法:用来初始化对象的方法,是个对象方法,而且减号开头   init 完整地创建一个可用的对象 1.分配存储空间    +

OC中instanceType和id的区别

今天在学习oc的过程中遇到关于instanceType和id的问题不太明白.查了一些资料后,总结它们两个的区别和联系主要有以下几点: 相同点:instanceType和id都是作为方法的返回类型而被使用. 不同点: 1.instancetype可以返回和方法所在类相同类型的对象,id返回的类型只能是未知类型的对象: 对于简易构造函数,用instancetype更好一点,因为编译器因此会知道返回的是什么类型的方法对象,而用id则不会,它只会返回未知类型的对象: 2.instancetype在错误检

OC SEL (@selector) 原理及使用总结

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); SEL 类成员方法的指针 可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取. 它的结果是一

OC -- (SEL)oc中消息传递机制-附:对performSelector方法的扩充

原文地址: http://www.cnblogs.com/ygm900/archive/2013/01/16/2862676.html 各种语言都有些传递函数的方法:C语言中可以使用函数指针,C++中有函数引用.仿函数和lambda,Objective-C里也有选择器(selector)和block.不过由于iOS SDK中的大部分API都是selector的方式,所以本文就重点讲述selector了.Objective-C和我接触过的其他面向对象的语言不同,它强调消息传递,而非方法调用.因此你

iOS开发——面试篇&amp;OC基本语法总结(面试)

OC基本语法总结(面试) C和OC对比 OC中主要开发在什么平台上的应用程序? 答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头? 答:OC中新增关键字大部分是以@开头 OC中新增加了那些数据类型? 答: Block类型 指针类型(Class, id类型) 空类型 特殊类型(SEL, nil) 面向对象特性是什么? 答:继承性,封装性,多态性 import和#include有什么区别? 答:import 的功能和 include一样, 是将右边的

OC语言-04-OC语言-核心语法

一.点语法 1> 基本使用 点语法本质上是set方法/get方法的调用 2> 使用注意 若出现在赋值操作符的右边,在执行时会转换成get方法 若出现在赋值操作符的左边,在执行时会转换成set方法 不能在set.get方法中用self使用点语法,会造成死循环 二.property和synthesize关键字 1> @property 作用 ① 自动生成某个成员变量的set方法和get方法 使用注意 ① 只能出现在@interface中 ② 可以使用逗号运算符为多个同类型的成员变量生成set