Должно ли использование NSLocking всегда заключаться в @ try / @ finally?

Дан объект Cocoa NSLocking (например, NSLock ) и некоторый нетривиальный код, который должен выполняться, пока блокировка удерживается:

Чтобы гарантировать блокировку всегда выпускается, должна ли всегда использоваться следующая идиома?

NSLock *mutex = // get lock from somewhere
@try {
    [mutex lock];
    // do non-trivial stuff
} 
@finally {
    [mutex unlock];
}

Это кажется разумным (и обычным для Java), но я не видел, чтобы какой-либо код Какао делал это.

Следует ли использовать эту идиому? Почему или почему нет?

11
задан justin 9 November 2011 в 07:59
поделиться