我正在尝试理解与KVC相关的Objective C的一些理论部分。以下是我所做的示例。
我有一个名为Cookie的类,它有一个如下的属性
@property NSString *name;
接下来,我有另一个名为Person的类,它具有以下属性。
@property Cookie *cookie;
人员实现文件内部
#import "Cookie.h"
- (id)init
{
self = [super init];
if (self) {
_cookie = [[Cookie alloc] init];
}
return self;
}
在我的 ViewContrtoller 中,我可以编写以下两个选项以获得相同的结果。
使用 KVC :
[me valueForKeyPath:@"cookie.name"]
使用访问器方法:
[[me cookie] name]
要编写访问器方法,我需要导入Cookie类,但使用KVC时不需要。
除此之外,使用KVC相比使用访问器方法有哪些好处?是否存在性能问题、安全问题、良好的编码实践或其他优点?