Setzt das Einstellen des gleichen Wertes für eine Eigenschaft immer noch willSet und didSet?

8

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.

    
Richard Venable 28.08.2014, 16:17
quelle

2 Antworten

13

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%     
Richard Venable 28.08.2014, 16:17
quelle
7

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.

    
Marián Černý 28.08.2014 20:40
quelle

Tags und Links