readonly 关键字用于属性的存取控制 ,如果不使用readonly ,编译器默认属性关键字为 readwrite。
在使用第三方sdk和自己制作sdk的过程中,经常遇见readonly修饰的属性。
既然使用readonly进行存储控制,那么很容易引出以下几个问题:
1、如何初始化?
2、如何更新?
3、如果能更新,如何阻止更新?
1答:1 自定义初始化方法,用实例变量接收初始化值;
自定义初始化方法1 使用实例变量接收2答:2.1 使用KVC 进行更新
使用KVC进行更新2.2 重写属性声明,在.m中开放 write权限 使用点语法进行更新;
.m重写属性声明 这里仅仅表示可以这样实现赋值 调用3答:3.1 重写 accessInstanceVariablesDirectly类方法,避免调用setValueForKey 时访问实例变量等;
3.2 重写 setValueForUndefinedkey 避免在他类调用时 引起crash
重写accessInstanceVariablesDirectly 重写setValueForUndefinedkey打印结果:
打印结果说了这么多,直接上干货:demo地址。
如果喜欢,请简书点击喜欢,如果觉着demo有用,欢迎star哦~
网友评论