如何自己实现属性的 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 方法同时存在.

猜你喜欢

转载自blog.csdn.net/dzb1060545231/article/details/80340736
今日推荐