2010-08-19 2 views
0

Je suis en train d'essayer pour écrire ma première application iOS qui n'est pas sortie d'un livre (même si je pense que je couds des choses ensemble comme des fous ....)en essayant d'initialiser un tableau mutable, puis le charger avec des images référencées par le nom

à ce stade, je tente d'initialiser un tableau mutable, puis le charger avec des images qui sont référencés par nom (ils sont dans le projet.)

C'est ce que je J'ai jusqu'ici, et basé sur ce que je vois dans le débogueur, mon tableau est vide.


- (void)viewDidLoad 
{ 
    txtLabel = [[UILabel alloc] init]; 
    imageView = [[UIImageView alloc] init]; 
    imageArray = [[NSMutableArray alloc] init]; 
    seg = [[UISegmentedControl alloc] init]; 

    imageArray = [[NSMutableArray arrayWithObjects: 
         [UIImage imageNamed:@"jupiter2.JPG"], 
         [UIImage imageNamed:@"waffles?.JPG"], 
         [UIImage imageNamed:@"enterprise.JPG"], 
         [UIImage imageNamed:@"wrunning.JPG"], 
         [UIImage imageNamed:@"ApolloCSM.JPG"], 
         nil] retain]; 

    imageView.image = [UIImage imageNamed:@"happy-face.JPG"]; 
    txtLabel.text = @"Hi there!"; 

    [super viewDidLoad]; 
} 

Merci pour toute aide.

Cordialement,

Steve O'Sullivan

+0

Qu'essayez-vous exactement de faire? – jtbandes

Répondre

1

Vous avez

imageArray = [[NSMutableArray alloc] init]; 

puis

imageArray = [[NSMutableArray arrayWithObjects: ... 

Cette fuite. Débarrassez-vous du premier. Mais pour la 2e, vous devez utiliser [[NSMutableArray alloc] initWithObjects:... afin qu'il reste collé.

0

Vous devez préciser "quand" est que vous voyez le tableau vide. Êtes-vous sûr que viewDidLoad a été appelé lors du débogage?

et aussi ... dans l'échantillon de code que vous ne avez pas besoin, en le faisant, vous créez une fuite de mémoire

imageArray = [[NSMutableArray alloc] init]; 

autre que qu'il n'y a rien de mal avec la façon dont vous construisez le tableau

0

Essayez allouer les images sur leur propre ligne et de voir si vous avez un pointeur:

UIImage *jupImg = [UIImage imageNamed:@"jupiter2.JPG"]; 

Si c'est nul alors vérifier le nom du fichier est correct et que le « Copier Bundle Ressources "copie réellement l'image là où elle peut être trouvée.

Si vous avez un pointeur, essayez d'accéder à certaines de ses valeurs comme la largeur et la hauteur pour voir si elles ont un sens.

-

EDIT

attendre un peu. Je suis parti et j'ai réfléchi à cela et je me suis souvenu d'un problème similaire que j'avais eu il y a un moment.

Je pense que le problème est que nous utilisons des tableaux mutables et non des tableaux statiques. La méthode que vous utilisez pour init le tableau n'est pas entièrement définie pour le tableau mutable.

Je pense que vous devez essayer quelque chose comme:

NSMutableArray *imageArray = [[NSMutableArray alloc] init]; 

[imageArray addObject:[UIImage imageNamed:@"jupiter2.JPG"]]; 
... add other images here ... 

Après cela, je parie que vous avez maintenant en fait quelque chose dans votre tableau.

0

Essayez cette ..

-->Remove this. imageArray = [[NSMutableArray alloc] init]; 
-->Try this. 
imageArray = [[NSMutableArray alloc]initWithObjects: 
         [UIImage imageNamed:@"jupiter2.JPG"], 
         [UIImage imageNamed:@"waffles?.JPG"], 
         [UIImage imageNamed:@"enterprise.JPG"], 
         [UIImage imageNamed:@"wrunning.JPG"], 
         [UIImage imageNamed:@"ApolloCSM.JPG"], 
         nil]; 

S'il n'y a aucune raison particulière

[super viewDidLoad]; 

mettre cela sur le dessus.