iOS runtime快速歸解檔

2021-07-26 05:32:09 字數 1857 閱讀 3329

在開發中 , 通常會運用到一些全域性的單例 , 儲存使用者的基本資訊或者一些基本狀態 . 這個時候可能會運用到單例來儲存資訊 , 保證全域性獲取到的都是最新的相同的資訊. 並且,一般全域性單例的屬性較多 , 比如包括了使用者的姓名,手機號,性別,城市,年齡等等眾多資訊.如果對該單例的各項屬性進行歸檔, 那麼得讓此單例遵循協議,並實現- (id)initwithcoder:(nscoder *)decoder- (void)encodewithcoder:(nscoder *)encoder方法.

首先 , 定義乙個單例物件

+ (instancetype)shareinstance

); return account;

}

假如該單例有如下屬性

@property (nonatomic, strong) nsnumber ****;                 //性別

@property (nonatomic, strong) nsnumber *registertime; //註冊時間

@property (nonatomic , copy) nsstring *level;

@property (nonatomic , copy) nsstring *mobile; //手機號

@property (nonatomic , copy) nsstring *nickname; //暱稱

@property (nonatomic , copy) nsstring *portrait; //頭像路徑

@property (nonatomic , copy) nsstring *status;

@property (nonatomic , copy) nsstring *tokenid; //唯一標識

@property (nonatomic , copy) nsstring *username; //使用者名稱

歸檔

- (void)encodewithcoder:(nscoder *)encoder

此方法通俗一點講 , 就是告訴系統該如何存屬性 , 如果用通常的方法做 , 實現- (void)encodewithcoder:(nscoder *)encoder方法如下

- (void)encodewithcoder:(nscoder *)encoder

如果用runtime快速歸檔

- (void)encodewithcoder:(nscoder *)encoder

free(ivar); //釋放

}

解檔

- (id)initwithcoder:(nscoder *)decoder

- (id)initwithcoder:(nscoder *)decoder

return

self;

}

如果用tuntime快速解檔

- (id)initwithcoder:(nscoder *)decoder

free(ivar); //釋放

}return

self;

}

當你的單例中,有上十個屬性,甚至幾十個屬性時 , 靈活運用runtime進行歸檔 , 能為你省下不少的** ,看著也不至於很low …

iOS 歸檔解檔

開發過程中有時需要儲存一些輕量級的資料,對於ios提供的幾種資料儲存方式在這時最合適當屬物件歸檔 nscoding 但是將物件資料進行歸檔解檔時候需要實現兩個方法 encodewithcoder和initwithencoder。encodewithcoder 編碼 initwithcoder 解碼使...

iOS 歸檔 解檔

1.新建類datacache 歸檔 void cachewithdata id data withfile nsstring file 解檔 id archivewithfile nsstring file 2.使用 儲存路徑 college mouth.arc 在虛擬機器上,簡單的寫可以找到路徑,...

ios 歸檔解檔

如果你想讓儲存乙個自定義的物件,你就要讓這個自定義的物件去遵守這個協議,而且我們要在.m檔案中重寫 void encodewithcoder nscoder acoder 方法來告訴歸檔需要儲存哪些屬性,這個nscoder型別的物件和字典很相似。我們在自定義類的.m檔案中要實現這個方法。就比如我在p...