0

メソッドの使用方法:

[receiver performSelectorOnMainThread:@selector(sel) withObject:nil waitUntilDone:NO]

パスからのファイルの削除が完了したときに別のメソッドを実行するには? これがどのように行われるかです:

NSFileManager *fileManager = [NSFileManager defaultManager];
                [fileManager removeItemAtPath:myFilePath error:NULL];
4

2 に答える 2

1

シンプルな removeItemAtPath: 戻り値の型が BOOL で、成功したかどうかに応じて if が YES または NO を返すことを意味し、書き込みが終了したことを意味します。そうは言っても、if ステートメントで呼び出しをラップし、その中から performSelectorOnMainThread: を呼び出すことができます。

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager removeItemAtPath:myFilePath error:nil]) {
    [receiver performSelectorOnMainThread:@selector(sel) withObject:nil waitUntilDone:NO]
}

ドキュメントから:

戻り値 アイテムが正常に削除された場合、またはパスが nil の場合は YES。エラーが発生した場合は NO を返します。デリゲートがファイルの操作を中止した場合、このメソッドは YES を返します。ただし、デリゲートがディレクトリの操作を中止した場合、このメソッドは NO を返します。

于 2013-08-29T21:22:00.330 に答える
1

代わりに Grand Central Dispatch を使用してみてください。

NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL didRemoveFile = [fileManager removeItemAtPath:myFilePath error:NULL];

dispatch_async(dispatch_get_main_queue(), ^{
    if (didRemoveFile) {
       // do something like inform everything went ok
    } else {
        // you could inform something bad happened here
    }

    // or perhaps you want a method to get called, every time
});
于 2013-08-29T21:22:47.903 に答える