自定义NSArray类定义

时间:2014-08-06 07:42:52

标签: objective-c macos inheritance foreach

我尝试在objective-c中编写自己的类。我在其中声明了一个类变量NSArray *_people。我设置了所有的setter和getters,一切都适合我,但是..一个愚蠢的简单问题。当我想用'for'循环查询我的数组时它必须是这样的:

for (NSString *s in [myClass people])

如何实现与通常的NSArray类实例相同的行为?:

for (NSString *s in people)

2 个答案:

答案 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>