一般情况下,我们需要建模的数据未必需要改变。具体到编程实践中,应该尽量吧对外公布出来的属性设为只读,而且只在有必要的时候才对外公布。如果试着改变属性值,编译器就会报错。对象中的属性值可以读取,但是不会写入。开发者在使用对象时就能确定其底层数据不会改变。
即使属性为只读(没有setter方法),也应该设置内存管理语义,如果以后想修改为读写属性,就会简单一些。
在对象外部仍可以通过“键值编码”方法设置这些属性。
对象里表示各种集合的那些属性究竟应该设成可变的,还是不可变的。
在这种情况下,通常应该提供一个只读属性供外界使用,该属性将返回一个不可变的集合,而这个集合是内部那份可变集合的拷贝。
总结:
1.尽量创建不可变对象
2.不要把可变的集合作为属性公开,应该提供相应的方法,以此修改对象中的可变集合。
即使属性为只读(没有setter方法),也应该设置内存管理语义,如果以后想修改为读写属性,就会简单一些。
在对象外部仍可以通过“键值编码”方法设置这些属性。
[object setValue:@"" forKey:@""];
这样做等于违规绕过了本类所提供的API。
对象里表示各种集合的那些属性究竟应该设成可变的,还是不可变的。
在这种情况下,通常应该提供一个只读属性供外界使用,该属性将返回一个不可变的集合,而这个集合是内部那份可变集合的拷贝。
总结:
1.尽量创建不可变对象
2.不要把可变的集合作为属性公开,应该提供相应的方法,以此修改对象中的可变集合。