0

ビューコントローラーをプッシュしているアプリケーションに UINavigationController があります。そのビュー コントローラーには、データがダウンロードされ、バックグラウンドで解析されている間にアニメーションを表示するプリローダー ビューがあります。アニメーションの下には、ユーザーを他のビュー コントローラーにリダイレクトするボタンがあります。

ここで、viewcontroller を pop することでこれを実現できます。これは、現在のビューがプッシュされたビューに移動する必要があるためです。ただし、ここでの問題は、ダウンロード、解析、タイマーなど、すべてがバックグラウンドで行われ続けることです。

私が必要とする機能は、ボタンをクリックしてVCをポップするとすぐにviewcontrollerが完全に動作を停止することです。

前もって感謝します。

4

1 に答える 1

1

バックグラウンド操作を実行するために何を使用していますか?

NSOperation をサブクラス化し、NSOperationQueue を使用して実行することで、バックグラウンド操作を簡素化できます。NSOperationQueue を解放するだけで、iOS が自動的にクリーンアップします。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html

ここに例があります。

@interface MyBackgroundOperation : NSOperation
@end

@implementation MyBackgroundOperation
- (id)init
{
    self = [super init];

    if(self != nil)
    {        
        // stuff that needs to be done at init
    }

    return self;
}

- (void)main
{
    @try
    {
        // run my background operations
    }
    @catch (NSException *e)
    {
        // catch the exception
    }
}

- (void)dealloc
{
    // clean up
    [super dealloc];
}
@end

次に、このように操作を開始します

NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];

MyBackgroundOperation *myOperation = [[MyBackgroundOperation alloc] init];
[operationQueue addOperation:myOperation];
[myOperation release];

[operationQueue release];

OS は、View Controller を解放しても影響を受けないように、操作が完了するまで操作を保持します。ただし、すでに開始されている操作を停止したい場合は、通知や KVO など、もう少し高度な手法を使用する必要があります。

于 2012-09-19T03:16:09.463 に答える