runtime 對成員變數操作應用之歸檔和返歸檔

2022-09-06 14:12:27 字數 896 閱讀 1718

為了實現歸檔和返歸檔,我們要讓被歸檔物件的類接受nscoding協議並且實現協議裡的兩個方法

- (void)encodewithcoder:(nscoder *)acoder;

- (nullable instancetype)initwithcoder:(nscoder *)adecoder; //

ns_designated_initializer

對上述兩個方法的實現

- (void)encodewithcoder:(nscoder *)acoder 

- (id)initwithcoder:(nscoder *)adecoder

下面用person類舉例子

.**件中一些屬性和成員變數的宣告

@property (nonatomic, copy) nsstring *name;

@property (nonatomic, assign) nsinteger age;

@property (nonatomic, strong) nsnumber *height;

@property (nonatomic, copy) nsstring *gender;

接收了nscoding協議之後實現協議中的兩個方法,沒錯,流程和以前的老方法是一樣一樣的

- (void)encodewithcoder:(nscoder *)acoder 

}- (nullable instancetype)initwithcoder:(nscoder *)adecoder

}return

self;

}

如果用runtime來實現歸檔和返歸檔遇到再複雜的類也不怕,可以利用迴圈來進行快速歸檔,不用逐一得寫了

runtime之成員變數

在oc中,成員變數就是乙個結構體,如下 struct objc ivar這個結構體描述了成員變數的名字,型別和偏移量。同時runtime也為我們提供了相應的函式來獲取類的成員變數的資訊。ivar nonnull nullable class copyivarlist class nullable c...

對成員變數的一些理解錯誤

public class demo demo d new demo1 d.change str,ch system.out.print str and for char tmp ch public void change string str,char ch 輸出的結果為asdasdas and g...

runtime獲取屬性和成員變數方法

成員變數 1 成員變數的定義 ivar 例項變數型別,是乙個指向objc ivar結構體的指標 typedef struct objc ivar ivar 2 相關函式 獲取所有成員變數 class copyivarlist 獲取成員變數名 ivar getname 獲取成員變數型別編碼 ivar ...