12
[self.foo setBlock:^{ 
    [self doSomething]; // causes warning 
}]; 

gegenWarum verursacht eine Nachricht senden in ARC eine Retain-Cycle-Warnung, aber eine Eigenschaftenmenge nicht?

[self.foo setBlock:^{ 
    self.bar = baz;  // does not cause warning 
}]; 

Die Warnung wird "Capturing self stark in diesem Block wird wahrscheinlich zu einem behalten Zyklus führen."

Führen beide nicht zu einer starken Referenz?

+0

Wenn das zweite Beispiel zu '[self setBar: baz];' geändert wird, erhalten Sie die Warnung? –

+0

Ja, wenn ich die Eigenschaft über diese Syntax festlegen, dann tue ich. – Aaron

+16

Compiler-Fehler. Wahrscheinlich in einer späteren Version behoben. – bbum

Antwort

1

Dies ist ein Compilerfehler und Sie sollten einen Fehlerbericht mit Apple einreichen.

Beide sind gleich, a.b = c ist nur eine andere Art zu schreiben [a setB: c]. Wenn der Compiler einen anderen als den anderen behandelt, ist das ein Fehler.

+0

Warum wurde das abgelehnt? –

Verwandte Themen