Wenn ich einen Eigenschaftswert auf denselben Wert setze, auf den er gerade eingestellt ist, werden willSet und didSet aufgerufen? Dies ist wichtig zu wissen, wenn Nebenwirkungen in diesen Funktionen auftreten.
Ja, willeSet und didSet werden aufgerufen, auch wenn auf denselben Wert gesetzt wird. Ich habe es auf einem Spielplatz getestet:
%Vor%Wenn Sie verhindern möchten, dass beim Einstellen des gleichen Werts Nebenwirkungen auftreten, können Sie den Wert mit newValue / oldValue vergleichen:
%Vor% Ja, tut es. Sie könnten eine Eigenschaft vom Typ haben, die nicht dem Equatable-Protokoll entspricht, und dann würde "gleicher Wert" keinen Sinn ergeben. willSet
und didSet
wird nicht nur aufgerufen, wenn der Wert im Initialisierer gesetzt ist.
Tags und Links swift