3 Stimmen

Synchronisierter Rückgabewert in Objective-C

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

Wenn ich das in Xcode mache, gibt es mir eine Warnung aus: "Kontrolle erreicht das Ende einer Funktion, die nicht void ist"

Gibt es ein Problem mit diesem Code?

11voto

bbum Punkte 161596

Es gibt einen Compiler-Warnfehler aus, der aufgrund eines Fehlers in einigen Versionen des Compilers auftritt, der in anderen/späteren Versionen des Compilers behoben ist.

In diesem Fall sind Sie tatsächlich auf einen Compilerfehler gestoßen.

1voto

Georg Fritzsche Punkte 95256

Die Synchronisation im geposteten Code ist überflüssig, aber es gibt damit kein Problem.
@synchronized Blöcke werden entweder normal verlassen oder durch Ausnahmen. Da du bereits eine return Anweisung darin hast, ist eine weitere Anweisung nach dem Block nicht erforderlich.

0voto

Yuji Punkte 33823

Ich verstehe nicht, was du in deinem Code tun möchtest, aber

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

sollte den gleichen Effekt haben (das Zurückstellen des Rückgabewerts, bis das mit self verbundene Schloss freigegeben wird), ohne den Compilerwarnung.

Aber: Was wolltest du tun? Du musst kein @synchronized auf diese Weise platzieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X