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,426評論 0 8
  • 原文出處:南峰子的技術博客 Objective-C語言是一門動態語言,它將很多靜態語言在編譯和鏈接時期做的事放到了...
    _燴面_閱讀 1,250評論 1 5
  • Objective-C語言是一門動態語言,它將很多靜態語言在編譯和鏈接時期做的事放到了運行時來處理。這種動態語言的...
    有一種再見叫青春閱讀 606評論 0 3
  • 我們常常會聽說 Objective-C 是一門動態語言,那么這個「動態」表現在哪呢?我想最主要的表現就是 Obje...
    Ethan_Struggle閱讀 2,230評論 0 7
  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,757評論 0 9