Objective-C中的可扩展集合?

Dan*_*ark 1 objective-c

我正在检查这个有此代码的问题

- (NSArray *) percentagesRGBArray:(float[]) rgbArray
{
    NSNumber *red = [NSNumber numberWithFloat:rgbArray[0] / 255];
    NSNumber *green = [NSNumber numberWithFloat:rgbArray[1] / 255];
    NSNumber *blue = [NSNumber numberWithFloat:rgbArray[2] / 255];
    NSNumber *alpha = [NSNumber numberWithFloat:rgbArray[3]];
    return [NSArray arrayWithObjects:red, green, blue, alpha, nil];
}
Run Code Online (Sandbox Code Playgroud)

我想,"那太糟糕了,如果你有三种以上的颜色怎么办?" 我知道,你没有,但是如果你确实有数1种颜色和阿尔法呢?假设你有[rgbArray count](对一个真正的数组有效吗?)只使用objective-C,你会返回一个NSArray n对象的常规方法是什么?

我只是想尝试解决这个问题,但我仍然没有在Objective-C中做到这一点.这是我失败的尝试:

- (NSArray *) what:(float[]) rgbArray
{
    int len = sizeof(rgbArray)/sizeof(float); // made up syntax
    NSLog(@"length is wrong dummy %d", len);
    NSNumber *retVal[len];
    for (int i=0;i<(len-1);i++) {
        NSNumber *red = [NSNumber numberWithFloat:rgbArray[0] / 255];
        retVal[i] = red;
        [red release];
    }
    retVal[len-1] = [NSNumber numberWithFloat:rgbArray[len-1]];
    return [NSArray arrayWithObjects:retVal count:len];

}
Run Code Online (Sandbox Code Playgroud)

Fer*_*cio 5

您可以使用NSMutableArray.

您可以从中添加和删除项目,它是NSArray的子​​类,因此可以将其传递给任何期望NSArray的方法.