这可能是一个荒谬的问题,但我的视图控制器中有这样的方法:
[self registerProperty:self.currentUser];
并在执行中registerProperty:
我想获取字符串“currentUser”。
我这样做是因为我想观察视图控制器“currentUser”的属性,而不是实际的用户对象,所以我可以拦截 setter。
目前,我正在检查 Objective-C 运行时以获取视图控制器的所有属性的列表,并检查属性的值是否等于 currentUser 对象:
-(void)registerProperty:(id)property
{
for (NSString *propertyName in [self allPropertiesOfClass:[property class]])
if ([property isEqual:[self valueForKey:propertyName]])
NSLog(@"The property passed into the method is %@", propertyName);
}
这样做的问题是我可能有两个属性都包含相同的用户对象,在这种情况下,它们中的任何一个都会通过该测试。我该如何解决这个问题?