ios – Objective-C编写通用getter和setter方法

在我的项目中,我有一个设置类,其属性包含自定义setter,可访问NSUserDefaults以使一切更简单.想法是Settings类有

@property Nsstring *name

它具有从NSUserDefaults获取名称值的自定义getter以及在那里保存新值的setter.通过这种方式,在整个项目中,我只与Settings类进行交互,以管理用户定义的首选项.问题是,编写所有getter和setter似乎过于重复(我有大约50个属性),并且想创建一个适用于所有变量的setter和一个getter.我唯一的问题是如何在setter中获取变量的名称.

最后一个问题是:是否有可能在getter或setter中查找被调用函数属性

如果你有其他的方法,我也会很感激,但考虑到我想把所有的NSUserDefaults东西保存在一个类中,我想不出一个包括编写50个getter和setter的替代方法.

谢谢!

解决方法

我发现你的问题非常有趣,我对自己说“接受挑战!”.

我在Github上创建了this项目.

基本上,您所要做的就是将VBSettings类子类化,然后声明de属性,如下所示:

@interface MySettings : VBSettings

@property (strong,nonatomic) Nsstring *hello;

@end

“hello”的值将以“hello”键保存到NSUserDefaults.用法示例:

MySettings settings = [[MySettings alloc] init];
settings.hello = "World!"; //The value is saved in NSUserDefaults
NSLog(@"%@",settings.hello); //The value is restored from NSUserDefaults.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...