OC语言description方法和sel

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,代表着当前方法。

注意:SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去寻找对应的方法地址,找到方法地址后就可以调用方法。这些都是运行时特性,发消息就是发送SEL,然后根据SEL找到地址,调用方法。

oc中写c语言的方法,OC语言description步骤和sel相关推荐

  1. OC中数组排序的3种方法

    总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...

  2. OC基础--OC中的类方法和对象方法

    PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似.明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧.重点是自己真的能够区分开! 一.OC中的对象方法 1 ...

  3. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    聊天界面发送嵌入式大杂烩获取1TB大杂烩资料包 STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM ...

  4. 5加载stm32 keil_STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要 ...

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

    + (void)load; 当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息 load 方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子类, 子类优先于 ...

  6. c语言中外部变量的使用方法,C语言外部变量的使用以及erxtern的用法

    网上有很多帖子问C语言中extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉. 变量定义性声明和引用性声明 变量的声明有两种 ...

  7. 微信小程序:wxml中写js语句的方法

    在小程序开发过程中,有时会遇到需要在wxml页面处理数据的情况,那么都有哪些方法可以实现呢?今天我们来总结两种方法. 第一种:直接在wxml文件中使用wxs标签 <wxs module=&quo ...

  8. 【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法

    目录: 准则层判断矩阵怎么填写 方案层判断矩阵怎么填写 关于判断矩阵和一致矩阵的知识点补充 一致性检验的步骤 怎样通过判断矩阵去计算权重(三种方法),及相应的代码示例 准则层判断矩阵的填写: 填写准则 ...

  9. CMI的C语言实现方法,C语言——Cmidiv0.6自主和弦模块(测试版)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码: 和弦试听(C语言)模块: #include #include #include #include #include #pragma comment ...

最新文章

  1. Spark集群搭建中的问题
  2. wxWidgets 编译 ICON 资源
  3. 滁州布局创新链服务链~农业大健康·万祥军:谋定功能性农业
  4. XML文件读取工具类
  5. laravel无法运行php,Laravel:php artisan服务无法启动
  6. P-GCN:Graph Convolutional Networks for Temporal Action Localization 2019 ICCV
  7. JAVA 大作业——DAY 3
  8. linux 串口 断帧,STM32f103使用串口中断发送数据时出现断帧是什么原因?
  9. 第4章 更新Erlang.mk
  10. 空对地(air-to-ground,A2G)通信发展概况与面临挑战
  11. Rhino在java中的用法
  12. Webservice 学习笔记
  13. 未来教育计算机二级2016版,20163未来教育计算机二级题库(操作题).docx
  14. EUYAO Replayer 节省你好多操作电脑的精力
  15. 30天自制操作系统(day1)
  16. Frank-Cucumber - Core Frank Steps
  17. python 录音vad_语音活性检测器py-webrtcvad安装使用
  18. 南京:探索实施“电子围栏”管理新模式 缓解商圈周边道路交通拥堵
  19. vscode配置python环境以及使用json文件配置默认解释器、代码自动保存、pydesigner、kite
  20. 巴巴腾机器人视频_巴巴腾机器人,没想到你是这样的机器人!

热门文章

  1. 目前大部分的游戏框架_简单的Windows游戏-第1部分:游戏框架
  2. 一文带你了解 三种深度学习框架(Caffe,Tensorflow,Pytorch)的基本内容、优缺点以及三者的对比
  3. Google“谷歌”引发的王怀南血案
  4. 通信原理——CDMA
  5. SDH原理--3.开销和指针
  6. 隐藏受保护的操作系统文件 变为单选框的恢复
  7. RocketMQ 集群平滑运维
  8. OpenDDS系列(3) —— 第一个OpenDDS程序
  9. 什么叫黑链-SEO zuobi手法解析
  10. OpenFeign中动态URl、动态传递接口地址