iOSでJSON解析を行っていて、スピナーを追加したかったのですが、これは問題なく機能しますが、スピナーを停止できません。その理由を理解したいと思います。
[spinner stopAnimating]
は非同期ブロックで呼び出され、問題が発生していると思います。おそらく、ブロック内のスピナーでメソッドを呼び出せないためですか?スピナーobjをログに記録しましたが、出力は次のとおりです。
<UIActivityIndicatorView: 0x76905f0; frame = (150 230; 20 20); layer = <CALayer: 0x768ffb0>>
たぶん誰かが私にobjective-cでこの非同期メソッドを扱う方法を理解させることができます。私は全くの初心者です。
コード:
- (void)viewDidLoad{
[super viewDidLoad];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.center = CGPointMake(160, 240);
[self.view addSubview:spinner];
[spinner startAnimating];
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:
kLatestKivaLoansURL];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
NSLog(@"loans: %@", spinner);
[spinner stopAnimating];
});
}