这是一个相当简单的内置python,例如:x = range(0,100)
如何使用objective-c方法完成相同的专长?肯定有比NSMutableArray和for循环更好的东西:
NSMutableArray *x = [NSMutableArray arrayWithCapacity:100];
for(int n=0; n<100; n++) {
[x addObject:[NSNumber numberWithInt:n]];
}
是的,我知道这样做很可能不是我实际想要做的事情(例如:python中的xrange
),但请幽默我的好奇心。 =)
澄清:我想要一个包含一系列NSNumber的NSArray,以便可以通过改组元素或按外部指标排序来进一步处理数组。
答案 0 :(得分:1)
如果你想要这样一个数组,你可能想要自己做NSArray的特定子类。
一个非常基本的实现示例如下:
@interface MyRangeArray : NSArray
{
@private
NSRange myRange;
}
+ (id)arrayWithRange:(NSRange)aRange;
- (id)initWithRange:(NSRange)aRange;
@end
@implementation MyRangeArray
+ (id)arrayWithRange:(NSRange)aRange
{
return [[[self alloc] initWithRange:aRange] autorelease];
}
- (id)initWithRange:(NSRange)aRange
{
self = [super init];
if (self) {
// TODO: verify aRange limits here
myRange = aRange;
}
return self;
}
- (NSUInteger)count
{
return myRange.length;
}
- (id)objectAtIndex:(NSUInteger)index
{
// TODO: add range check here
return [NSNumber numberWithInteger:(range.location + index)];
}
@end
之后,您可以覆盖其他一些NSArray方法,以提高您的课程效率。
答案 1 :(得分:0)
NSRange range = NSMakeRange(0, 100);
您可以通过以下方式迭代此范围:
NSUInteger loc;
for(loc = range.location; loc < range.length; loc++)
{
}