非同期の http GET リクエストを送信していますが、completedHandler が正しく呼び出されています。ログに出力が表示されるので、NSLog のようなコールバックのコードが実行されます。ただし、行: self.imageView.image = nil; NSLogステートメントが「ここに来ました」の数秒後まで有効にならないようです。何が起こっているか知っている人はいますか?サンプルコードは次のとおりです。
ViewController.m で:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
@synthesize imageView = _imageView;
-void viewDidLoad {
// ImageView
UIImage *image = [UIImage imageNamed:@"test.jpg"];
self.imageView.backgroundColor = [UIColor blackColor];
self.imageView.clipsToBounds = YES;
self.imageView.image = image;
}
-void test {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://someurl"] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];
[request setHTTPMethod:@"GET"];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
self.imageView.image = nil;
NSLog(@"got here");
}];
}
@終わり