通过Objective-c中的类成员进行迭代

时间:2011-08-03 09:19:34

标签: iphone objective-c cocoa

我想知道在Objective-C中迭代类成员的最佳方法是什么。我想这样做,所以当类更改时,我不必重写一个检查某些类成员的方法。

即:

@Interface Foo : NSObject
{
    NSString *bar1;
    NSString *bar2;
}

所以我想在这里以恐怖的方式检索bar1和bar2。

非常感谢!

2 个答案:

答案 0 :(得分:1)

鉴于属性和其他类成员可能属于(根本上)不同的类型,这是一个坏主意™。

更好的方法是将您感兴趣的成员组合在一个单独的NSDictionaryNSArray属性中,并在需要访问这组相似成员时对其进行迭代。

第二种方法是在您正在检查的类中使用一个静态的键字符串数组,其中包含相关类成员的访问键;并使用@property符合键值编码的事实进行迭代,允许您使用-valueForKey:-setValue:forKey:代替其实际访问者。

这当然需要在更改类时更新该数组的生成;因此可能会或可能不会被您接受。

答案 1 :(得分:1)

这可能就是Objective-C Runtime Reference

之后的情况