為了實現歸檔和返歸檔,我們要讓被歸檔物件的類接受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 ...