当将可变对象放入collection又修改值时,容易破坏set的内部数据结构,令其失去固有的语义;
将属性声明为readonly后,当试图改变属性值时编译器就会报错.保证开发时对象的底层数据不会改变,对象本身的数据结构也就不可能出现不一致的现象.
在对象内部"class-continuation分类"可以将属性重新声明为readwrite.
如要修改属性值,应该通过该类提供的方法来实现.
在对象外部,仍然可以设置这些属性值,通过KVC来实现.违规绕过该类提供的API.
或者通过类别信息查询功能查出对应的实例变量在内存中的偏移量来修改对应的实例变量的值.
可以通过class_copyIvarList和class_copyPropertyLIst获得类中所有的成员变量和属性的详细信息.