2 Stimmen

Eigenschaften innerhalb von init unter Verwendung von ARC einrichten?

Vor der Einführung von ARC, als ich einem Eigenschaftswert mit init (oder initWith) zuweisen wollte, verwendete ich einfach retain (als Folge davon, dass ich den Property-Setter nicht innerhalb von init verwenden wollte).

// Vor ARC mit retain verwenden
// @property (nonatomic, retain) DataModel *dataModel;
// @synthesize dataModel = _dataModel;

- (id)initWithDataModel:(id)newModel) {
    self = [super init];
    if(self) {
        _dataModel = [newModel retain];
    }
    return self;
}

Mit ARC (wieder ohne Setter zu verwenden), ist dies der richtige Weg, um newModel der dataModel-Eigenschaft zuzuweisen? Meine Vermutung ist, dass der Compiler (mit ARC) sehen wird, dass die Eigenschaft als strong definiert ist und die Eigenschaft korrekt setzen wird. Ich frage mich, ob das richtig ist?

// Mit ARC verwenden
// @property (nonatomic, strong) DataModel *dataModel;
// @synthesize dataModel = _dataModel;

- (id)initWithDataModel:(id)newModel) {
    self = [super init];
    if(self) {
        _dataModel = newModel;
    }
    return self;
}

0 Stimmen

0voto

uchuugaka Punkte 12486

Ja, das funktioniert. Es handelt sich bereits um ein synthetisiertes Attribut. Du kannst Attributzugriffsmethoden oder den direkten Zugriff auf das synthetisierte Attribut verwenden.

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