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