从NSArray获得子阵列最优雅的方法是什么?

Ant*_*ong 3 cocoa cocoa-touch objective-c nsarray

在Python中,我可以像这样容易得到一个子阵列

>> v1 = ['a', 'b', 'c', 'd']
>> v2 = v1[1:]
>> v2
['b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

如何优雅地在Objective-C中完成相同的操作?

起初我虽然这种方法可以完成这项工作:

- (void)getObjects:(id[])aBuffer range:(NSRange)aRange
Run Code Online (Sandbox Code Playgroud)

但它将对象复制到缓冲区位置.我需要将它们添加回另一个实例NSArray.另外,编译器抱怨保留/释放属性,我真的不太愿意处理.

    id* objs;

    NSRange rng = NSMakeRange(1, [v1 count] - 1);

    [v1 getObjects:objs range:rng]; # Sending '__strong id *' 
                                    # to parameter of type '__unsafe_unretained id *'  
                                    # changes retain/release properties of pointer
Run Code Online (Sandbox Code Playgroud)

那么,还有更优雅的方式吗?或者除了迭代之外别无他法objectEnumerator

Jas*_*oco 10

NSArray* v1 = @[@"a",@"b",@"c",@"d"];
NSRange rng = NSMakeRange(1,[v1 count]-1);
NSArray* v2 = [v1 subarrayWithRange:rng];
Run Code Online (Sandbox Code Playgroud)