只見過
@property (copy, nonatomic) NSString * name;
沒見過
@property (mutableCopy, nonatomic) NSString * name;
why?
因為mutbaleCopy默認只針對于Foundation框架里的Array,Dictionary,Set,String等.
但是屬性是一種通用的語法.
很可能是自定義的各種類,或者UIKit框架下的東西,他們沒有可變不可變之分.
就好比你見過一個可變的UIView嗎?可以把兩個UIView融合成一塊?
[string appendString:];?
你見過一個可變的Person類嗎?可以把一個人砍成兩個人?
[string componentsSeparatedByString:]?
當(dāng)然,你如果想自定義mutableCopy也是可以的...就是用起來可能會產(chǎn)生誤會.
// interface
@property (strong, nonatomic) NSMutableArray * nameArray;
// implementation
- (void)setNameArray:(NSMutableArray *)nameArray {
if (_nameArray == nameArray) return; // 基本上來說,不用判斷是否是同一個,因為用了mutableCopy.除非self.nameArray = self.nameArray.
_nameArray = [nameArray mutableCopy];
}