0

ViewDidAppear

[self performSelectorInBackground:@selector(generatePdf) withObject:nil];

と呼ばれます。これにより、ビューが読み込まれるとすぐに大きな PDF が生成されます。メモリ不足の問題を考慮するために、このプロセスが開始されたら停止できますか? 使用する

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(generatePdf) object:nil];

おそらく、ビューが表示されるとすぐに呼び出されているため、機能しません。アプリが受信した場合、このプロセスを停止したいので、私の方法didReceiveMemoryWarningで完全に停止するソリューションを探しています- (void)didReceiveMemoryWarning

- (void)viewDidAppear:(BOOL)animated
{


 LogCmd();
[super viewDidAppear:animated];
if (self.pdfData == nil) {



    // Generate PDF

    [self performSelectorInBackground:@selector(generatePdf) withObject:nil];
   }
}

 ....some code


- (void)didReceiveMemoryWarning {



[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(generatePdf) object:nil];


}
4

1 に答える 1

2

実行中のメソッドを停止することはできませんが、そこから戻ることはできます。

例えば

- (BOOL)generatePdf{
    // some task

    if (memoryWarning){
        return NO;
    }

    // some Task

    if (memoryWarning){
        return NO;
    }

    //some Task

    if (memoryWarning){
        return NO;
    }

    //some Task

    //PDF has been successfully generated
    return YES;
}
于 2013-03-06T14:09:51.870 に答える