跳到主要內容

NSString 該用 copy 還是 strong


先做個實驗, NSString 的 copy 會不會讓 reference count + 1呢?

事實證明 NSString 的 copy 會讓原本 object count +1,而 NSMutableString 不會,原因是如果一直用 copy 會有效能問題,所以 NSString 的 copy 預設是 retain count + 1

However, you may think that always copying is slow. So NSString's copy simply calls retainNSMutableString's copy makes an actual copy.
NSString 


NSMutableString


所以 NSString 到底是用 copy or strong 呢? 


如上圖所示,應該取決於你是否會用 Mutable 的情況,一般來說用 copy 是比較保險的, 因為可能會是 NSString instance 或 NSMutableString instance ,在 mutable 情況也不會有問題。

-end-



(番外篇) 那 NSArray NSMutableArray 的 @property 該怎麼用呢?

NSArray 用 copy or string 是情況而定,取決於是否要跟著改值
NSMutableArray 則是用 strong ,因為 mutable call copy 會回 immutable counterparts 所以是 NSArray ,如果在 call addObject() 會讓 complier 視為 NSArray 會導致 crash。


留言

這個網誌中的熱門文章

[遊記] 江南富有詩意的水鄉 - 烏鎮

踏進入烏鎮後,就是充滿古色古香的建築,河流曲道貫穿整個鄉鎮。 烏鎮分東西南北區,又稱柵,遊客主要活動範圍有 東柵 跟 西柵 ,兩個區域的活動可以搭接駁車,而整個園區是圍起來的,必須買票才能一窺烏鎮風貌,進去後就能恣意的漫步整個街道巷弄,欣賞河道上的古厝與小橋。 Ben Lee(@popochess)分享的貼文 於 2017 年 9月 月 12 1:52上午 PDT 張貼 晚上走在小橋上,欣賞著河面上的光影變化也別有一番詩意 Ben Lee(@popochess)分享的貼文 於 2017 年  9月 月 11 3:29上午 PDT 張貼 Ben Lee(@popochess)分享的貼文 於 2017 年 9月 月 11 3:27上午 PDT 張貼 大部分每個人家都一個渡船的小港口 Ben Lee(@popochess)分享的貼文 於 2017 年 9月 月 11 9:30下午 PDT 張貼 當沒有人經過時,小橋流水古厝三者像是時間都靜止般的散發出濃濃的詩意。 Ben Lee(@popochess)分享的貼文 於 2017 年 9月 月 12 2:13上午 PDT 張貼 - 花費 - 去程:杭州西湖 -> 烏鎮   (計程車 110 RMB / 人) 回程:烏鎮 -> 上海 (客運 54 RMB / 人) 烏鎮門票: 200 RMB / 人 搭船一趟:60 RMB / 人