我试图在多线程中调用[NSData writeToFile:atomically]。
[myLock lock];
[myData writeToFile:aPath atomically:YES];
[myLock unlock];
但是如果writeToFile抛出异常,则不会调用[myLock unlock]。那么,我应该像这样使用try-cache吗?
@try
{
[myLock lock];
[myData writeToFile:aPath atomically:YES];
}
@catch (NSException *exception) {
// deal with the exception
}
@finally {
[myLock unlock];
}
更新 将'自动'更改为'原子'
答案 0 :(得分:1)
它不会抛出任何异常(也没有文档中的说明也是如此)。如果您担心处理错误,请使用其他API:
- writeToFile:options:error:
答案 1 :(得分:1)
首先,方法是
- (BOOL)writeToFile:(NSString * nonnull)path
atomically:(BOOL)atomically
不是自动,可能只是一个错字。
其次,writeToFile不会引发异常,它只会返回一个BOOL,指示写入是否失败或成功。
[myLock unlock];
无论如何都会被召唤,你不需要捕捉任何异常。
答案 2 :(得分:0)
@finally
,因此您不必担心它未被解锁。