如何使用一组重新出现的图像初始化NSArray?

时间:2011-06-02 17:31:00

标签: objective-c cocoa-touch cocoa nsarray

编辑:我想我在这里问了一些非常错的事,我很抱歉。我正在做的,是一个老虎机的模拟,但我不认为我在UIPICKERVIEW中放置250(50 * 5)个图像是明智的(只是不想侮辱我自己)没有理由这样做,我现在的想法是每个列只使用不同顺序的6个图像然后当我旋转时,一次又一次地在30(6 * 5)个图像上旋转并旋转它们,这将给出相同的使用较少的资源,效果好吧?我看不出我在想什么,谢谢大家的答案

在iOS中实现复杂的UIPickerView(5个组件),我坚持这个问题......

我有5个NSArrays(对于选择器中的每个组件......不可变)我有6个图像。

我需要使用一组图像初始化每个数组,这将为50个图像填充数组,在set之后设置(我猜测某种for循环将运行8次并用另外2个图像填充数组在最后?)

在每个数组中,图像需要采用不同的顺序,但同样,对于同一个数组,该集必须始终相同。

当我说一个集合时,我的意思是我需要一次又一次地将图像放在同一个顺序中,而不是它们在另一个阵列或类似的东西中......

任何人都可以帮忙吗?

10倍, 埃雷兹

2 个答案:

答案 0 :(得分:1)

不确定我理解这个问题,但是,如果我这样做了,你可以这样做:

NSArray *set = [NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],/* all the images */ , nil];
NSMutableArray *tmp = [[NSMutableArray alloc] init];


for (int i = 0; i<50; i++) {
    [tmp addObject:[set objectAtIndex:(i%6)]];
}

然后您可以将tmp用作普通NSArray,或执行类似

的操作
NSArray *result = [NSArray arrayWithArray:tmp];

PS。完成后不要忘记释放tmp。

答案 1 :(得分:1)

UIImage        *image;
int             randomIndex;

NSCountedSet   *set    = [[NSCountedSet alloc] initWithCapacity:50];
NSMutableArray *arrays = [[NSMutableArray alloc] initWithCapacity:5];

for ( int i = 0; i < 5; i++ ) {
    while ( [set count] < 50 ) {
        randomIndex = arc4random() % 6;
        image = [images objectAtIndex:randomIndex];

        switch ( [set count] ) {
            case 48:
            case 49:
                if ( [set countForObject:image] < 9 ) {
                    [set addObject:image];
                }
                break;

            default:
                if ( [set countForObject:image] < 8 ) {
                    [set addObject:image];
                }
        }
    }

    [arrays addObject:[set allObjects]];
    [set removeAllObjects];
}

[set release];

这个想法是使用一个计数集并获得添加到它的元素的数量。这样我们就可以跟踪被添加的对象。