2013-08-29 40 views
0

我如何使用方法:performSelectorOnMainThread当文件被删除IOS

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

当从路径的文件的删除完成后要运行的另一种方法?这是它是如何做:

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

不要重复你的问题。 – rmaddy

回答

1

简单,removeItemAtPath:有一个BOOL返回类型,这意味着,如果将返回YES或NO取决于它是否是成功的,因此这意味着它写完。话虽如此,你可以将这个调用包装在一个if语句中,并从其中调用performSelectorOnMainThread:。

NSFileManager *fileManager = [NSFileManager defaultManager]; 

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

the docs:

返回值是如果该项目成功或者如果去掉路径是 为零。如果发生错误,则返回NO。如果代理中止文件的 操作,则此方法返回YES。但是,如果 委托放弃目录的操作,则此方法返回NO。

1

尝试使用大中央调度代替:

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 
}); 
+0

这有时会起作用。有时候这个方法没有被调用。我希望在删除结束时始终调用它 – user2014474

+0

检查我的最新编辑。只要在if语句之外调用一些东西。 –

相关问题