JavaShuo
欄目
標籤
《Objective-c》Foundation框架 -(copy/mutableCopy)
時間 2019-11-13
標籤
Objective-c
foundation
框架
copy
mutablecopy
欄目
iOS
简体版
原文
原文鏈接
1.copy(不可變副本)/mutableCopy(可變副本):
copy語法的目的:改變
副本
的時候,不會影響到源對象;
一個對象能夠使用
copy
/
mutableCopy
方法
建立副本
;
copy
須要先實現NSCopying協議,建立的是
不可變副本
;
mutableCopy
須要先實現
NSMutableCopying協議
,建立的時
不可變副本
;
深拷貝:
內容(對象)的拷貝
,源對象和副本指向的是不一樣的對象。
源對象
的引用計數器
不變
,
新對象
的引用計數器設
置爲1
;
淺拷貝:
指針的拷貝
,源對象和副本指向的時同一個對象。
對象
的引用計數器
+1
;至關於作了一次
retain
操做;
只有不可變對象建立不可變副本(copy)纔是前拷貝,其餘的都是深拷貝;
NSString
/
NSMutableString
、
NSDictionary
/
NSMutableDictionary
、
NSArray
/
NSMutableArray
等都已經實現了
NSCopying協議
和
NSMutableCopying協議
,因此在使用
copy
或者
mutableCopy
建立副本是不用再實現
NSCopying協議
或者
NSMutableCopying協議
2.淺拷貝(指針拷貝):
淺拷貝:
指針拷貝
,不會產生新對象。源對象的計數器+1,至關於作了一次
retain操做;
只有一種狀況是
淺拷貝
,不可變對象調用對象方法時;
淺拷貝爲
指針的拷貝
:
3.深拷貝(內容拷貝):
深拷貝:
內容(對象)拷貝
,會產生
新對象
。新對象的計數器置1,源對象的計數器不變;
深拷貝一:NSString NSMutableCopy
深拷貝二:NSMutableString copy
深拷貝三:NSMutableString NSMutableCopy
3.自定義類以及子類的拷貝:
自定義的類若是想使用
copy
或者
mutableCopy
必需要先實現
NSCopying協議
或者
NSMutableCopying協議
!否則會報錯「
[Student copyWithZone:]: unrecognized selector sent to instance 0x1030051a0
」
NSCopying協議
或者
NSMutableCopying協議
中都
各有一個方法
:因此咱們應該從新實現其方法!
- (id)copyWithZone:(NSZone *)zone
方法的重寫:
因爲子類中還有其餘的屬性(age),因此還要將age屬性拷貝給副本,因此還要在子類中重寫
- (id)copyWithZone:(NSZone *)zone
方法
使用靜態方法快速建立對象時的注意點:
相關文章
1.
Foundation框架-NSTimeZone
2.
Foundation框架-NSCalendar
3.
Foundation框架
4.
Foundation框架—集合
5.
OC的Foundation框架
6.
Foundation框架介紹
7.
Foundation框架解析
8.
iOS - OC Foundation 框架
9.
OC中Foundation框架
10.
IOS之Core Foundation框架和Cocoa Foundation框架的區別
更多相關文章...
•
Docker 架構
-
Docker教程
•
SSH框架(Struts2+Spring+Hibernate)搭建整合詳細步驟
-
Spring教程
•
適用於PHP初學者的學習線路和建議
•
Tomcat學習筆記(史上最全tomcat學習筆記)
相關標籤/搜索
foundation
objectivec
框架
objectivec&swift
集合框架
web框架
ORM框架
CXF框架
WEB框架:Django
DRF框架
C&C++
iOS
Hibernate教程
Spring教程
MyBatis教程
架構
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
eclipse設置粘貼字符串自動轉義
2.
android客戶端學習-啓動模擬器異常Emulator: failed to initialize HAX: Invalid argument
3.
android.view.InflateException: class com.jpardogo.listbuddies.lib.views.ListBuddiesLayout問題
4.
MYSQL8.0數據庫恢復 MYSQL8.0ibd數據恢復 MYSQL8.0恢復數據庫
5.
你本是一個肉體,是什麼驅使你前行【1】
6.
2018.04.30
7.
2018.04.30
8.
你本是一個肉體,是什麼驅使你前行【3】
9.
你本是一個肉體,是什麼驅使你前行【2】
10.
【資訊】LocalBitcoins達到每週交易比特幣的7年低點
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
Foundation框架-NSTimeZone
2.
Foundation框架-NSCalendar
3.
Foundation框架
4.
Foundation框架—集合
5.
OC的Foundation框架
6.
Foundation框架介紹
7.
Foundation框架解析
8.
iOS - OC Foundation 框架
9.
OC中Foundation框架
10.
IOS之Core Foundation框架和Cocoa Foundation框架的區別
>>更多相關文章<<