我想知道在Objective-C中迭代类成员的最佳方法是什么。我想这样做,所以当类更改时,我不必重写一个检查某些类成员的方法。
即:
@Interface Foo : NSObject
{
NSString *bar1;
NSString *bar2;
}
所以我想在这里以恐怖的方式检索bar1和bar2。
非常感谢!
答案 0 :(得分:1)
鉴于属性和其他类成员可能属于(根本上)不同的类型,这是一个坏主意™。
更好的方法是将您感兴趣的成员组合在一个单独的NSDictionary
或NSArray
属性中,并在需要访问这组相似成员时对其进行迭代。
第二种方法是在您正在检查的类中使用一个静态的键字符串数组,其中包含相关类成员的访问键;并使用@property
符合键值编码的事实进行迭代,允许您使用-valueForKey:
和-setValue:forKey:
代替其实际访问者。
这当然需要在更改类时更新该数组的生成;因此可能会或可能不会被您接受。
答案 1 :(得分:1)