2013-03-25 1 views
16

Wenn ich eine Eigenschaft wie folgt erklären:Was ist die richtige Methode zum Erstellen eines benutzerdefinierten Setter für eine schwache Eigenschaft in Objective C?

@property(nonatomic,weak) Foo *someProperty; 

und ich erkläre dann eine benutzerdefinierte Setter wie so:

- (void)setSomeProperty:(Foo *)someProp { 
    _someProperty = someProp; 
    //...more custom stuff 
} 

ist es etwas falsch mit diesem? Das heißt, der Compiler sollte automatisch den _someProperty-Ivar mit dem __weak-Modifikator synthetisieren, also sollte die Zuweisung im obigen Setter ausreichen, richtig?

Antwort

13

Ja, das ist alles. Natürlich können Sie eine benutzerdefinierte iVar angeben, wenn Sie etwas anderes als _someProperty wie mag:

@synthesize someProperty = someProperty_; 
+0

+1 ganz einfach. –

+0

Vielen Dank! So, wie ich es verstehe, wenn Sie einen benutzerdefinierten Setter in ARC schreiben, ist das einzige Mal, dass Sie sich Sorgen über "überschreiben" müssen die Attribute in der Eigenschaftsdeklaration, wenn Sie die Eigenschaft mit atomaren deklariert haben (in diesem Fall müssten Sie @synchronize um die Einstellung der iVar) und kopieren (in diesem Fall würde Ihre Zuweisung aussehen wie _someProperty = [someProp Kopie];) – adevine

Verwandte Themen