博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运行时runtime
阅读量:5925 次
发布时间:2019-06-19

本文共 860 字,大约阅读时间需要 2 分钟。

2.运行时给一个对象增加方法

//C方法形式定义被增加的方法

void helloLog(id self, SEL _cmd)

{

    NSLog(@"helloLog");

}

//OC方法形式定义被增加方法

- (void)helloLog

{

    NSLog(@"helloLog");

}

//需要新增方法的类

Class newClass = [NSObject class];

//C方法形式

class_addMethod(newClass, @selector(helloLog),(IMP)helloLog, "v@:");

 //OC方法形式

class_addMethod(newClass, @selector(helloLog),(IMP)helloLog, "v@:");

 

 //调用新增方法

id instance = [[NSObject alloc] init];

[instance performSelector:@selector(helloLog) withObject:nil];

 

Objective-C运行时定义了几种重要的类型。

  • Class:定义Objective-C类
  • Ivar:定义对象的实例变量,包括类型和名字。
  • Protocol:定义正式协议。
  • objc_property_t:定义属性。叫这个名字可能是为了防止和Objective-C 1.0中的用户类型冲突,那时候还没有属性。
  • Method:定义对象方法或类方法。这个类型提供了方法的名字(就是**选择器**)、参数数量和类型,以及返回值(这些信息合起来称为方法的**签名**),还有一个指向代码的函数指针(也就是方法的**实现**)。
  • SEL:定义选择器。选择器是方法名的唯一标识符。
  • IMP:定义方法实现。这只是一个指向某个函数的指针,该函数接受一个对象、一个选择器和一个可变长参数列表(varargs),返回一个对象

 

转载于:https://www.cnblogs.com/ldc529/p/4313907.html

你可能感兴趣的文章
Java 分布式-思考如果构建分布式系统架构
查看>>
linux下crontab命令的使用技巧
查看>>
gradle学习(21)-在eclipse中构建java项目
查看>>
Git 分支的新建与合并
查看>>
taobao-pamirs-schedule-2.0源码分析——任务处理器源码分析
查看>>
redis配置文件实例
查看>>
This account is currently not available
查看>>
理解OAuth 2.0
查看>>
.Net Compact Framework 基础篇(10)--多语言程序的定制
查看>>
android 获取已连接过的Wifi密码
查看>>
15.11.05笔记
查看>>
Git 教程
查看>>
代码编程规范
查看>>
JFinal教程JfinalUIB 代码笔记 (7)--- URL拦截规则和修改
查看>>
Win10:关闭开机自启动,从来没有这么简单高效!
查看>>
Common Lisp 和 Cocoa 结合起来编写 APP 的例子--代码中设置加载路径
查看>>
Java并发编程基础-线程-状态
查看>>
HTTPS 部署简要指南
查看>>
MySQL用户管理
查看>>
Jquery——输入验证
查看>>