Дан объект Cocoa NSLocking
(например, NSLock
) и некоторый нетривиальный код, который должен выполняться, пока блокировка удерживается:
Чтобы гарантировать блокировку всегда выпускается, должна ли всегда использоваться следующая идиома?
NSLock *mutex = // get lock from somewhere
@try {
[mutex lock];
// do non-trivial stuff
}
@finally {
[mutex unlock];
}
Это кажется разумным (и обычным для Java), но я не видел, чтобы какой-либо код Какао делал это.
Следует ли использовать эту идиому? Почему или почему нет?