2013-07-20 5 views
0

У меня уже было много UIImageViews. Я хочу создать массив UIImageViews и назначить каждый элемент массива одним из вышеперечисленных UIImageView. Как я могу сделать это с помощью объектного c? ? Я сделал это в Java, как следующее:Массив UIImageViews в объективе-c

JLabel l1=new JLabel(); 
JLabel l2=new JLabel(); 
JLabel [] arrayOfLabels = new JLabel[2]; 
arrayOfLabel[0] = l1; 
arrayOfLabel[1] = l2; 

мне нужно сделать то же самое в Objective C ..

+0

Где у вас есть много изображений? Как они определяются? – Wain

ответ

1

Позвольте мне ответить вам в соответствии с вашими заявлениями Java для лучшей ясности:

//Java: 
    JLabel l1=new JLabel(); 

    //Objective C: 
    UIImageView * l1= [[UIImageView alloc] init]; 


    //Java: 
    JLabel l2=new JLabel(); 

    //Objective C: 
    UIImageView * l2 = [[UIImageView alloc] init]; 


    //Java 
    JLabel [] arrayOfLabels = new JLabel[2]; 

    //Objective C 
    NSMutableArray * imagesArray = [[NSMutableArray alloc] init]; 

    //Java 
    arrayOfLabel[0] = l1; 

    //Objective C 
    [imagesArray addObject:l1]; 


    //Java 
    arrayOfLabel[1] = l2; 

    //Objective C 
    [imagesArray addObject:l2]; 

Поскольку вы не используете ARC (я угадал от Вашего комментария), так что поэтому вы должны освободить вещи вручную, как часть управления памятью, как:

 [l1 release]; //After adding it to imagesArray 

    [l2 release]; //After adding it to imagesArray 

И отпустить imagesArray когда вы надеваете Это не нужно. Обычно это делается в dealloc(), но вы можете выпустить его в любой момент, когда вам не нужно его дальше, просто позвонив:

[imagesArray release]; 
    imagesArray = nil; 

Надежда так что это поможет вам.

+0

thank u .. где бы я выпустил массив ?? – nouf

+0

'imagesArray [0] = l1' тоже законно, больше java-esque. –

+1

Просто используйте ARC @nouf, если, конечно, нет веской причины, по которой вы не можете ... В этом случае '[imagesArray release]' когда вам это больше не нужно. и '[l1 release]' и '[l2 release]' после того, как вы добавите их в массив. –

0
UIImageView *view1; 
UIImageView *view2; 
// assuming they are already instantiated 
NSMutableArray *arrayOfImageViews = [[NSMutableArray alloc] init]; 
[arrayOfImageViews addObject:view1]; 
[arrayOfImageViews addObject:view2]; 
+0

Так что view1 находится в индексе 0 и view2 по индексу 1 правильно ?? .. что, если тогда я захотел изменить элемент при индексе 1 на view1 ?? я имею в виду, как я могу получить доступ к определенному элементу для изменения? – nouf

+0

Это будет '[arrayOfImageViews replaceObjectAtIndex: 1 с Object: view1];'. Обратите внимание, что массив содержит ** указатели ** для реальных объектов (например, view1, view2). Вы не можете изменить указатель, замените его. Однако вы можете изменить элемент, на который указывает указатель. Вы можете получить к нему доступ с помощью '[arrayOfImageViews objectAtIndex: 1]' –

+0

спасибо Thomas :) – nouf

1
UILabel * l1 = [[UILabel alloc] init]; 
UILabel * l2 = [[UILabel alloc] init]; 
NSMutableArray * arrayOfLabels = [NSMutableArray arrayWithCapacity:2]; 
arrayOfLabels[0] = l1; 
arrayOfLabels[1] = l2; 
0

Используя более современный синтаксис можно сказать

NSArray *[email protected][ view1, view2, view3 ]; 
Смежные вопросы