Синхронизированный возврат target-c - PullRequest
3 голосов
/ 23 июня 2010
- (id)methodThatReturnsSomething
{
    @synchronized(self) {
        return nil;
    }
}

Когда я делаю это на XCode, он возвращает мне предупреждение: «Управление достигает конца не пустой функции»

Есть ли проблемы с этим кодом?

Ответы [ 3 ]

11 голосов
/ 24 июня 2010

Это выводит предупреждение компилятора из-за ошибки в некоторых версиях компилятора, исправленных в других / более поздних версиях компилятора.

В этом случае, да, вы действительно наткнулись на ошибку компилятора.

1 голос
/ 23 июня 2010

Синхронизация в опубликованном коде избыточна, но с этим проблем нет:
@synchronized блоки выходят либо нормально, либо через исключения. Поскольку у вас уже есть оператор return, другой оператор после блока не нужен.

0 голосов
/ 23 июня 2010

Я не понимаю, что вы хотите сделать в своем коде, но

- (id)methodThatReturnsSomething
{
    @synchronized(self) {
    }
    return nil;
}

должен иметь тот же эффект (откладывать возврат до освобождения блокировки, связанной с self), безпредупреждение компилятора.

Но: что вы хотели сделать?Вам не нужно ставить @synchronized таким образом.

...