我尝试在objective-c中编写自己的类。我在其中声明了一个类变量NSArray *_people
。我设置了所有的setter和getters,一切都适合我,但是..一个愚蠢的简单问题。当我想用'for'循环查询我的数组时它必须是这样的:
for (NSString *s in [myClass people])
如何实现与通常的NSArray
类实例相同的行为?:
for (NSString *s in people)
答案 0 :(得分:0)
<强> MyClass.h 强>
@interface MyClass
@property (nonatomic, strong) NSArray *people;
@end
现在,您可以像...一样访问数组
for(NSString *s in [myclass people])
答案 1 :(得分:0)
如果要将人员数组属性保密,则应在新课程中实施NSFastEnumeration
协议。自定义实现非常困难(缓冲,更改变异标记,指针和大小),但是你的情况非常简单。
在.m
文件中,您应该实施:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len {
return [self.people countByEnumeratingWithState:state objects:buffer count:len];
}
在你的标题文件中:
@interface YourClass : NSObject<NSFastEnumeration>