我有一个以下界面的课程:
@interface MyData : NSObject
@property (readwrite, strong) NSString *urlToParse;
@property (readwrite, strong) MappingElement *titleElement;
- (instancetype)initWithPlist:(NSString *)plistPath;
它的实现是这样的:
- (instancetype)initWithPlist:(NSString *)plistPath
{
if (self = [super init]) {
NSDictionary *plistData = [[NSDictionary alloc]
initWithContentsOfFile:plistPath];
[self setValuesForKeysWithDictionary:plistData];
}
return self;
}
#pragma mark KVC related methods
- (void)setValue:(id)value forKey:(NSString *)key
{
NSLog(@"key class: ",[[self valueForKey:key] class]); // it is printing nil, prints
correct value if key is initialized in init method
}
现在有两种情况:
场景1:不要在initWithPlist:
方法中初始化实例变量
在这种情况下,如果我尝试在setValue:forKey:
方法中记录密钥类,
它打印无。
场景2:在initWithPlist:
方法中初始化实例变量
在这种情况下,如果我尝试在setValue:forKey:
方法中记录密钥类,
它会打印NSString
,然后打印MappingElement
。
有没有办法在'场景1'中实现相同的结果,可能是 使用Objective = C运行时的任何API?