Je charge des images avec cette classe. J'ai besoin d'aide pour les empêcher de se charger quand dealloc est appelé. Cette classe étend UIImageView. Aussi tout autre conseil pour la conception de la classe est apprécié, je vais vouloir par exemple expédier les octets chargés.Arrêt d'une photo d'un nouveau fil à charger
@implementation RCPhoto
- (id)initWithFrame:(CGRect)frame delegate:(id)d {
if ((self = [super initWithFrame:frame])) {
// Initialization code
delegate = d;
self.contentMode = UIViewContentModeScaleAspectFit;
}
return self;
}
- (void)dealloc {
[super dealloc];
}
#pragma mark Load photo
- (void)loadImage:(NSString *)path {
// Create a new thread for loading the image
[NSThread detachNewThreadSelector:@selector(load:)
toTarget:self
withObject:path];
}
- (void)load:(NSString *)path {
// You must create a autorelease pool for all secondary threads.
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//NSLog(@"RCPhoto loadImage into a new thread: %@", path);
NSURL *url = [NSURL URLWithString: path];
NSData *data = [NSData dataWithContentsOfURL: url];
UIImage *image = [[UIImage alloc] initWithData: data];
[self performSelectorOnMainThread: @selector(performCompleteEvent:)
withObject: image
waitUntilDone: NO];
[pool release];
}
- (void)performCompleteEvent:(UIImage *)image {
//NSLog(@"RCPhoto finish loading");
[self setImage:image];
self.opaque = YES;
if ([delegate respondsToSelector:@selector(onPhotoComplete)]) {
[delegate performSelector:@selector(onPhotoComplete)];
}
}
@end
Merci, c'est tout. –