访问将发件人的哪些属性传递给方法

时间:2013-02-17 04:32:14

标签: ios objective-c cocoa-touch cocoa foundation

这可能是一个荒谬的问题,但我的视图控制器中有这样的方法:

[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);
}

这个问题是我可能有两个属性都包含相同的用户对象,在这种情况下,它们中的任何一个都会通过该测试。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:2)

传入要观察其属性的对象,并将属性名称另外传递为字符串。也就是说,KVO -addObserver:...方法的参数的镜像(子集)。