アプリがビジーであることを示すカスタムの方法として、アニメーション化された UIImageView を表示するアプリを作成しています。ファイルのアップロードに NSOperationQueue を使用しています。キューに何かがあるときに UIImageView を表示したいと思います。キュー内のすべての操作が完了したら、UIImageView を削除したいと考えています。
これは本当に簡単にできることだと思っていましたが、ここ 1 時間行き詰まっています。UIImageView を表示するのはとても簡単ですが、削除できないようです。おそらく、私が見落としているのは本当に単純なことです。これが私のコードです。ありがとうございました!:)
- (void)viewDidLoad {
    //set up the uiimageview
    self.spinnerView = [[UIImageView alloc] initWithFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width-44,0,44,44)];
    self.spinnerView.animationImages = [NSArray arrayWithObjects:
                                     [UIImage imageNamed:@"0.gif"],
                                     [UIImage imageNamed:@"1.gif"],
                                     [UIImage imageNamed:@"2.gif"],
                                     [UIImage imageNamed:@"3.gif"],
                                     [UIImage imageNamed:@"4.gif"], nil];
    self.spinnerView.animationDuration = 0.5f;
    self.spinnerView.tag = 998;
    self.spinnerView.animationRepeatCount = 0;
    [self.view addSubview: self.spinnerView];
    //set up the queue
    self.uploadQueue = [[NSOperationQueue alloc] init];
    [self.uploadQueue setMaxConcurrentOperationCount:1];
    //set up observer for the queue
    [self.uploadQueue addObserver:self forKeyPath:@"operationCount" options:NSKeyValueObservingOptionNew context:NULL];
}
- (void)newUpload:(NSData*)data {
    [self.spinnerView startAnimating];
    //....
    //request is a NSURLRequest that's set up in this method
    [NSURLConnection sendAsynchronousRequest:request queue:self.uploadQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    }];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                     change:(NSDictionary *)change context:(void *)context
{
    if (object == self.uploadQueue && [keyPath isEqualToString:@"operationCount"]) {
        if (self.uploadQueue.operationCount == 0) {
            [self.spinnerView stopAnimating];
        }
    }
    else {
        [super observeValueForKeyPath:keyPath ofObject:object
                           change:change context:context];
    }
私はこれを正しくやっていますか?それを行うより良い方法はありますか?私はしばらくここで立ち往生しており、おそらくUIImageViewが台無しになっているのではなく、NSOperationQueueにNSURLRequestsを追加する方法であると考え始めています。
再度、感謝します!