如何自己实现属性的 setter和getter 方法

笔者最近做项目中需要将用户的资料模型归档成plist 文件,并在应用启动时从 plist 文件中读取出来,使用了单例类来管理这个模型.因为用户资料中有些属性需要频繁的赋值修改,需要每次把模型取出来后修改属性,再归档到沙盒目录下是很麻烦的.所以通过单例类保存一个用户资料模型,需要的时候直接通过 getter 方法读取,然后通过setter方法赋值.那么这个时候问题来了, property 的属性不支持同时重写 setter 和getter方法.先看下边是如何实现的,然后再介绍下每一步的是怎么做的.

1 声明一个 property 描述的属性

2  使用@dynamic 属性名 告诉编译器不自动生成setter和 getter 方法


3 自己声明一个 _currentUser的成员属性 最好是在类拓展里边声明这个私有的成员属性


4 就是手写 setter 和 getter 方法 给自己声明的_ currenUser 的成员属性赋值和取值

setter 方法的内部实现 

 getter 方法内部实现


通过以上操作就可以屏蔽掉系统的 setter 和 getter 方法的实现,然后自己生成 setter 和 getter 方法 ,保证了setter和 getter 方法同时存在.


好了,我是大兵布莱恩特,欢迎加入博主技术交流群,iOS 开发交流群

![QQ20180712-0.png](https://upload-images.jianshu.io/upload_images/1155481-9b84a3a3fce64f61.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容