2009-06-17 2 views
0

J'essaie d'afficher environ 53 images dans Xcode pour iPhone, mais à propos de la 37e image bloque mon application entière! Si quelqu'un voit des erreurs dans mon code, j'apprécierais vraiment votre aide. Je vous remercie!!Besoin d'aide avec Scroll View Crashing

Je pense que je ne libère pas mes images quelque part ... je ne sais pas quoi faire!

#import "MyProjectViewController.h" 

@implementation MyProjectViewController 


@synthesize scrollView1; 

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation { 
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 


const CGFloat kScrollObjHeight = 320.0; 
const CGFloat kScrollObjWidth = 480.0; 
const NSUInteger kNumImages = 53; 


- (void)layoutScrollImages 
{ 
UIImageView *view = nil; 
NSArray *subviews = [scrollView1 subviews]; 
CGFloat curXLoc = 0; 
for (view in subviews) 
{ 
if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
{ 
CGRect frame = view.frame; 
frame.origin = CGPointMake(curXLoc, 0); 
view.frame = frame; 

curXLoc += (kScrollObjWidth); 
} 
} 

[scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)]; 
} 

- (void)viewDidLoad 
{ 
self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor]; 

[scrollView1 setBackgroundColor:[UIColor blackColor]]; 
[scrollView1 setCanCancelContentTouches:NO]; 
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
scrollView1.clipsToBounds = YES; 
scrollView1.scrollEnabled = YES; 
scrollView1.pagingEnabled = YES; 




NSUInteger i; 

for (i = 1; i <= kNumImages; i++) 
{ 
NSString *imageName = [NSString stringWithFormat:@"c1_%d.jpg", i]; 
UIImage *image = [UIImage imageNamed:imageName]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

CGRect rect = imageView.frame; 
rect.size.height = kScrollObjHeight; 
rect.size.width = kScrollObjWidth; 
imageView.frame = rect; 
imageView.tag = i; 
[scrollView1 addSubview:imageView]; 
[imageView release]; 

} 

[self layoutScrollImages]; 

} 



- (void)dealloc 
{ 
[scrollView1 release]; 

[super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
} 


@end 

Merci !!!!!

+0

Quelle est l'erreur dans Xcode lorsque l'application se termine? –

Répondre

2

Quelle est la taille des images? Je suspecte que le problème ne soit pas avec le code lui-même, mais avec les limites de mémoire de l'iPhone/iPod - si vous chargez de grandes images elles mangent simplement toute la mémoire et le programme est fermé.

1

Eh bien, la raison la plus probable est que vous manquez de mémoire. Placez un message NSLog dans didReceiveMemoryWarning pour vérifier si vous recevez un avertissement pour un manque de mémoire.

Dans tous les cas, je suggère que vous chargez des images paresseuses et pas toutes les images à la fois. Cela réduira considérablement le temps de chargement de votre application et résoudra probablement vos problèmes de mémoire. Utilisez UIScrollViewDelegate pour savoir quand charger les images qui n'ont pas encore été chargées en fonction de la position de la valeur de décalage UIScrollView.