0

我该如何使用该方法:

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

完成从路径中删除文件时运行另一种方法?这是这样做的:

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

2 回答 2

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 回答
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 回答