Runtime第三篇-对象操作

1,动态创建对象

1.1  id class_createInstance ( Class cls, size_t  extraBytes );

1.2  id objc_constructInstance ( Class cls, void *bytes );

1.3 void * objc_destructInstance ( id obj ); //销毁一个实例

2,把父类对象转换为子类对象

NSObject *a = [[NSObject alloc] init];

id newB = object_copy(a, class_getInstanceSize(MyClass.class));

object_setClass(newB, MyClass.class);

object_dispose(a);

//MyClass继承自NSObject。

3,读写对象的实例变量

3.1 修改实例变量的值

Ivar object_setInstanceVariable ( id obj, const char *name, void *value );

void object_setIvar ( id obj, Ivar ivar, id value );

3.2 获取实例变量的值

Ivar object_getInstanceVariable ( id obj, const char *name, void **outValue );

id object_getIvar ( id obj, Ivar ivar );

3.3 获取对象的类

Class object_getClass ( id obj );

3.4 设置对象的类

Class object_setClass ( id obj, Class cls );

3.5 返回对象的类名

const char * object_getClassName ( id obj );

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Objective-C语言是一门动态语言,他将很多静态语言在编译和链接时期做的事情放到了运行时来处理。这种动态语言...
    tigger丨阅读 1,431评论 0 8
  • 原文出处:南峰子的技术博客 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了...
    _烩面_阅读 1,258评论 1 5
  • Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的...
    有一种再见叫青春阅读 610评论 0 3
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 2,231评论 0 7
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,774评论 0 9