oc语言--description方法和sel

一、description方法

Description方法包括类方法和对象方法。(NSObject类所包含)

(一)基本知识

-description(对象方法)

使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出。

+description(类方法)

使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@。

使用@%打印对象如(“@%”,P)默认打印输出为<类名:内存地址>,虽然字符串也是对象,但字符串在使用@%打印时情况特殊。

重写description方法,实现对对象所有属性的打印。

(二)实现打印对象的所有属性

(三)区别

+description方法决定了类对象的输出结果,即类本身

-description方法决定了实例对象的输出结果,即Person创建的对象。

二、SEL

SEL:全称Selector 表示方法的存储位置。

方法在内存中是怎么存储的?

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

[p test];

寻找方法的过程:

(1)首先把test这个方法名包装成sel类型的数据;

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

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

(4)注意:在这个操作过程中有缓存,第一次找的时候是一个一个的找,非常耗性能,之后再用到的时候就直接使用。

关于_cmd:每个方法的内部都有一个-cmd,代表着当前方法。

三、自我总结

  通常我们会对description方法进行重现,以实现我们想要的打印结果。SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去寻找对应的方法地址,找到方法地址后就可以调用方法。这些都是运行时特性,发消息就是发送SEL,然后根据SEL找到地址,调用方法。这种模式简单方便易用。

时间: 2024-11-02 09:24:12

oc语言--description方法和sel的相关文章

李洪强iOS开发之OC语言description方法和sel

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

OC语言description方法和sel

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

黑马程序员_OC学习笔记之description方法和sel

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

黑马程序员——OC语言Set方法和Get方法

@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问 一)set方法 1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 2.命名规范: 1> 方法名必须以set开头 2> set后面跟上成员变量的名称,成员变量的首字母必须大写 3> 返回值一定是void 4> 一定要接收一个参数,而且参数类型跟成员变量类型一致 5> 形参的名称不能跟成员变量名一样 二)get方法 get方法 1.作用:返回对象内部的成员变量 2.命

「OC」类的深入研究、description方法和sel

一.类的深入研究 (一)类的本质 类本身也是一个对象,是class类型的对象,简称“类对象”. Class类型的定义: Typedef struct obj class *class; 类名就代表着类对象,每个类只有一个类对象. 利用class 创建 Person类 利用Person 创建Person类型的对象 Person *p=[[Person alloc] init]; 获取内存中的类对象有两种方法: (1)class c=[p claa];//指向类的对象的指针调用class方法 (2)

Objective-C语言-description方法和sel-BOLCK和协议

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

OC语言description方法

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

OC 中 load 方法和 initialize 方法的异同

+ (void)load; 当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息 load 方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子类, 子类优先于分类 load 方法不会被类自动继承 + (void)initialize; 也是在第一次使用这个类的时候会调用这个方法

【学习笔记】【OC语言】set方法和get方法

1.set方法和get方法的使用场合@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数2.set方法作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值命名规范:方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写形参名称不要跟成员变量同名3.get方法作用:返回对象内部的成员变量命名规范:get方法的名称一般就跟成员变量同名4.成员变量的命名规范成员变量都以下