OC自定義物件的copy

2021-06-27 04:53:28 字數 610 閱讀 7510

一、概念

1、copy的目的在於修改源物件或者副本的時候互不影響

2、只有在不可變物件copy的時候才是淺拷貝,其餘都是深拷貝

二、自定義物件的copy(必須首先遵守nscopying協議)

1、自定義物件copy的必要步驟

1>遵守nscopying協議 2

>重寫

實現copywithzone:方法

2、arc的copy

實現copywithzone:(nszone *)zone

e.g.:person物件有兩個屬性name和age

- (id)copywithzone:(nszone *)zone

3、mrc的copy

1>做完必要的遵守協議和實現copywithzone方法

2>對oc物件屬性重寫其記憶體管理的setter方法

3>重寫dealloc方法

3、zone空間介紹

1>因為copywithzone:當中的zone就是要為物件開闢的記憶體空間(oc的alloc就是c語言的malloc開闢記憶體用的,同樣需要告訴系統你要開闢空間大小)

2>nszone空間分配出來的堆空間是相對比較連續的,可以減少記憶體碎片,一般程式開發沒有必要關心

OC 自定義 setDateFormat 顯示格式

nsstring getstringfromdate nsdate adate 以下是setdateformat可使用的英文代號 紀元的顯示 g 顯示ad,也就是公元 年的顯示 yy 年的後面2位數字 yyyy 顯示完整的年 月的顯示 m 顯示 成1 12,1位 數或2位 數mm 顯示成01 12,...

物件陣列。自定義物件

定義學生類屬性 自定義方法 顯示學生資訊方法年齡增加方法測試類 建立用於儲存學生的陣列,長度為5,建立5個學生物件,將物件儲存到陣列中遍歷陣列中的學生物件,分別呼叫年齡增加方法,將學生年齡增加2遍歷陣列中的學生物件,分別呼叫顯示資訊的方法,檢視所有學生資訊查詢年齡大於20的學生資訊 針對這個作業。寫...

建立自定義物件

你並不侷限於前幾節所討論的jscript的內建物件,你可以自定義包含有你自己的方法和屬性的物件來擴充jscript,這是jscript的乙個強大的特性。例如,你可以建立乙個名為webuser的物件,它包含參觀你網點的使用者的資訊,這個物件可以包含諸如使用者名稱 密碼和註冊狀態之類的屬性,將所有這些屬...