NSOperationQueue を使用して UIImageView をロードします。
ロードは、インターネットから画像をフェッチし、それを画像ビューに追加します。私が抱えている問題は、メソッドが終了することですが、画像ビューが実際に画像を表示するか、スーパービューから画像ビューを削除するのに約3秒かかります...
- (void)viewDidLoad { NSLog(@"AirportDetailView: viewDidLoad");
[super viewDidLoad];
[self.activity startAnimating];
self.queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadImage) object:NULL];
[self.queue addOperation:operation];
[operation release];
}
-(void)loadImage {
[myAp ImageForAp];
NSLog(@"ImageFor Ap Ended, %@",myAp.ApDiagram);
[self.activity stopAnimating];
if (myAp.ApDiagram==NULL) {
NSLog(@"Finally Gets Here");
[self.Diagram removeFromSuperview];
}
else {
NSLog(@"Finally Gets Here with Diag");
[self.Diagram setBackgroundImage:myAp.ApDiagram forState:UIControlStateNormal];
}
}
NSLOG は、最初の 2 つのログ ステートメント間の遅延が約 3 秒であることを示していますが、その理由を理解できません....
最新のコードで更新......
-(void)loadImage {
[myAp ImageForAp];
NSLog(@"ImageFor Ap Ended, %@",myAp.ApDiagram);
[self performSelectorOnMainThread:@selector(UpdateUI) withObject:nil waitUntilDone:NO];
}
-(void)UpdateUI {
[self.activity stopAnimating];
if (myAp.ApDiagram==NULL) {
NSLog(@"Finally Gets Here");
[self.Diagram removeFromSuperview];
}
else {
NSLog(@"Finally Gets Here with Diag");
[self.Diagram setBackgroundImage:myAp.ApDiagram forState:UIControlStateNormal];
}
}