runtime:是运行时机制,oc特有
编译时:不会检查方法是否真实实现
运行时:才会知道
c语言不同:编译时就知道
具体实现:
Person*p=[Person alloc]init]
[p eat];
调用方法的本质是:消息发送机制,运行时机制
底层实现是:
[p performSelector:@selector(eat)];
它的再底层是:
runtime运行时代码
objc_msgSend(p,@selector(eat));
objc_msgSend([person class],@selector(eat));
方法交换:
class_getClassMethods([UIImage class],@selector(imageNamed));
class_getClassMethods([UIImage class],@selector(xm_imageNamed));
class_exchangeIMpleation(methods1,methods2)
运行时添加方法:
[self performSelector:@selector(run)];run方法未实现
+(bool)resloveWithInstance:sel
{
if (sel=@selector(eat))
class_addMethods([self class],sel,aaaa,"v@:")
return . methods;
}
void . aaaa(id self , _cmd, id num)
{
}
运行时添加属性:
1.给已经存在的类添加分类object file --category,在分类里面添加属性,
2.在实现的方法里面:
设置set方法:调用objc_setAssociatedobject(self,@"name',nameOBJC_ASSOCIATTION_RETAIN_NONATOMIC)产生关联
3个参数的意义:给哪个对象添加,key是,value是
设置get方法:调用objc_getAssociatedobject(self,@"name")返回值
2个参数的意义:返回哪个对象的哪个key对应的值
3.添加头文件#import 《objc/message》
objc_setAssociatedobject(self, id key(@"name",value(name),OBJC_ASSOCIATTION_RETAIN_NONATOMIC))
onjc_getAssociatedbject(self, id key (@"name"))

转载于:https://www.cnblogs.com/xiaohuihui-/p/7618370.html

runtime的意义相关推荐

  1. wf工作流java_WF Workflow 状态机工作流 开发

    概述 工作流是对业务流程的建模,当我们设计工作流的时候,我们首先要分析业务处理过程中要经历的步骤.然后,我们就可以利用WF创建工作流模型来模拟业务的处理过程. 我们知道,WF包含两种类型的工作流:顺序 ...

  2. 深入理解 runtime

    当人们初学 Cocoa/Objective-C 时,Objective-C Runtime 是被忽略的特性之一.原因是 Objective-C(这门语言)很容易在几小时内就熟悉,新学 Cocoa 的人 ...

  3. java Runtime.getRuntime().exec 获取反弹shell

    说明 前面写了一篇在Java环境下获取shell的文章.当时使用的语句是: Runtime r = Runtime.getRuntime(); Process p = r.exec(new Strin ...

  4. 【Linux 内核】CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )

    文章目录 一.CFS 调度器概念 ( 完全公平调度器 ) 二.CFS 调度器虚拟时钟概念 ( Virtual Runtime ) 三.进程优先级 ( 调度优先级 | 静态优先级 | 正常优先级 | 实 ...

  5. Objective-C Runtime

    当人们初学 Cocoa/Objective-C 时,Objective-C Runtime 是被忽略的特性之一.原因是 Objective-C(这门语言)很容易在几小时内就熟悉,新学 Cocoa 的人 ...

  6. [转]inux Kernel部分选项意义

    转自:http://hi.baidu.com/xtyangjie/item/b23b673bfa8ef4c7382ffa78 inux Kernel部分选项意义 Processor type and ...

  7. Flink 必知必会:Flink Runtime Architecture

    简介:众所周知 Flink 是分布式的数据处理框架,用户的业务逻辑会以Job的形式提交给 Flink 集群.Flink Runtime作为 Flink 引擎,负责让这些作业能够跑起来并正常完结.这些作 ...

  8. 爆发前的最后按钮 白鹭推HTML5首款生态产品Egret Runtime

    随着HTML5标准定稿掀起的热潮,白鹭时代14年11月主办"HTML5移动游戏大会",微信开放HTML5分享接口引得行业一片惊呼,再到搜狐力推HTML5而重磅发布手机搜狐网3.0, ...

  9. runtime相关知识

    简介: objc是一门动态语言,它总是想办法把一些决定工作从编译连接推迟到运行时.也就是说只有编译系统是不够的,,还需要一个把一些一个运行时系统(runtime system)来执行编译后的代码.这就 ...

最新文章

  1. 复习计算机网络day2
  2. linux命令之高级使用 find
  3. 你应该如何正确健壮后端服务?
  4. boost::safe_numerics模块有理数示例程序
  5. java thread signal_java — Thread之CountDownLatch的使用
  6. 关于混合使用智能指针和内置指针的自己的问题和自己的见解(问题搜集中)这个帖子有待解决的问题
  7. python模块介绍- xlwt 创建xls文件(excel)
  8. 63. Unique Paths II and 64. Minimum Path Sum
  9. 设计模式学习笔记——工厂(Factory)模式
  10. linux 修改bios信息,一种基于Linux系统通过IPMI工具修改BIOS选项的测试方法及系统_2017103901253_权利要求书_专利查询_专利网_钻瓜专利网...
  11. Windows 无法删除文件夹的只读
  12. countable php,ThinkPHP容器之Countable巧用
  13. X509证书信任管理器类的详解
  14. 【离散数学】平凡子群
  15. python能制作ppt动画效果吗_那些超酷的视频效果,真的是用PPT动画做的吗?
  16. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
  17. python学习笔记十-文件操作
  18. 微信为什么使用 SQLite 保存聊天记录?
  19. css动画animation详细解读
  20. 从表征到行动---意向性的自然主义进路(续八)

热门文章

  1. php 添加 redis 扩展模块
  2. HTTP家族详细讲解
  3. go的优势--链表与结构体使用
  4. 我的git仓库,顺记github配置
  5. 《转》sql优化的几种方法
  6. android 热门开源库,GitHub安卓热门开源资源在项目中的使用及项目总结
  7. php+预览和下载pdf文件,vue实现在线预览pdf文件和下载(pdf.js)
  8. mgr未同步 mysql_MySQL MGR如何修复数据不一致的节点
  9. 【kafka】kafka kerberos Cannot locate KDC Unable to locate KDC for realm
  10. 【Antlr】修改由Antlr生成的表示式?替换遍历方式?