- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change

    Kann ich in dieser Methode den Observer der den Aufruf ausgelöst hat removen und später wieder adden?
    Es scheint zu funktionieren, aber wer weiss was beim Kunden passiert. :evil:

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • RE: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)ch

    Original von Chris
    Kann ich in dieser Methode den Observer der den Aufruf ausgelöst hat removen und später wieder adden?

    Klar, aber nur, wenn du auch ein Goto einbaust, damit die Sache rund wird. ;)

    Original von ChrisEs scheint zu funktionieren, aber wer weiss was beim Kunden passiert. :evil:

    Chris

    Generell ist es üblich, in der Methode auf andere Dinge zu observieren oder das wieder aufzulösen, etwa bei einer To-Many-Relationship. Sich selbst zu deobservieren ist etwas schräg, sollte aber funktionieren. Darf ich den Hintergrund erfahren?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)ch

    Original von Amin Negm-Awad
    Original von Chris
    Kann ich in dieser Methode den Observer der den Aufruf ausgelöst hat removen und später wieder adden?

    Klar, aber nur, wenn du auch ein Goto einbaust, damit die Sache rund wird. ;)

    Original von ChrisEs scheint zu funktionieren, aber wer weiss was beim Kunden passiert. :evil:

    Chris

    Generell ist es üblich, in der Methode auf andere Dinge zu observieren oder das wieder aufzulösen, etwa bei einer To-Many-Relationship. Sich selbst zu deobservieren ist etwas schräg, sollte aber funktionieren. Darf ich den Hintergrund erfahren?

    Bitte, unwichtiges weggekürzt:

    Quellcode

    1. - (BOOL) login
    2. {
    3. uninteressanter Code
    4. [self addObserver: self forKeyPath: @"connectionState" options: NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context: NULL];
    5. return YES;
    6. }
    7. - (BOOL) logout
    8. {
    9. [self removeObserver: self forKeyPath: @"connectionState"];
    10. uninteressanter Code
    11. }
    12. - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    13. {
    14. if ([keyPath isEqualToString: @"connectionState"])
    15. {
    16. if (Bedingung erfüllt)
    17. {
    18. [self logout]
    19. [self login]
    20. }
    21. }
    22. }
    23. }
    Alles anzeigen


    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • RE: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)ch

    Du observierst dich selbst, um festzustellen, dass du dich selbst observieren musst?

    Ich habe das sichere Gefühle, dass das ohne KVO deutlich einfacher geht:

    Quellcode

    1. -(void)setConnectionState:(BOOL)state
    2. {
    3. // Mach et, Otze
    4. }
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)ch

    Original von Amin Negm-Awad
    Du observierst dich selbst, um festzustellen, dass du dich selbst observieren musst?

    Ich habe das sichere Gefühle, dass das ohne KVO deutlich einfacher geht:

    Quellcode

    1. -(void)setConnectionState:(BOOL)state
    2. {
    3. // Mach et, Otze
    4. }

    Sch..., ganz übersehen dass man die Accessoren selbst schreiben kann.
    Otze?
    Tastatur?

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • RE: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)ch

    Original von Chris
    Sch..., ganz übersehen dass man die Accessoren selbst schreiben kann.

    Meinst du das jetzt ironisch? *verwirrtguck*

    Original von ChrisOtze?
    Tastatur?

    Bekannt wurde Rutemöller unter anderem durch den später in diversen Abwandlungen zum geflügelten Wort gewordenen Spruch „Mach et, Otze!“: Frank Ordenewitz hatte am 7. Mai 1991 im DFB-Pokal-Halbfinale zwischen dem 1. FC Köln und dem MSV Duisburg Rutemöller in der Halbzeitpause angekündigt, eine rote Karte provozieren zu wollen. Denn er wäre durch eine gelbe Karte (die zweite gelbe Karte im laufenden Wettbewerb) aus der ersten Halbzeit für das Pokalfinale gesperrt gewesen. Nach dem damaligen Regelwerk hätte Ordenewitz aber eine Rot-Sperre in der Bundesliga absitzen können, dann wäre er für das Finale spielberechtigt gewesen. In der Tat holte sich Ordenewitz wenige Minuten vor Ende der Partie seine rote Karte durch Wegschlagen des Balles ab. Von den Medien nach dem Spiel befragt, gab Rutemöller, im Gegensatz zu Frank ‘Otze' Ordenewitz, mit eben dem bewussten Zitat den Vorsatz seines Spielers und sein eigenes Einverständnis damit offen zu. Daraufhin wurde Ordenewitz vom DFB wegen unsportlichen Verhaltens trotzdem für das Pokalfinale gesperrt, Rutemöller musste 5.000 DM Strafe zahlen. Das DFB-Pokalfinale verlor der 1. FC Köln dann gegen Werder Bremen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)ch

    Original von Amin Negm-Awad
    Original von Chris
    Sch..., ganz übersehen dass man die Accessoren selbst schreiben kann.

    Meinst du das jetzt ironisch? *verwirrtguck*

    Ne, ich habe echt nicht mehr daran gedacht. Der Fluch des @property
    Original von ChrisOtze?
    Tastatur?

    Bekannt wurde Rutemöller unter anderem durch den später in diversen Abwandlungen zum geflügelten Wort gewordenen Spruch „Mach et, Otze!“: Frank Ordenewitz hatte am 7. Mai 1991 im DFB-Pokal-Halbfinale zwischen dem 1. FC Köln und dem MSV Duisburg Rutemöller in der Halbzeitpause angekündigt, eine rote Karte provozieren zu wollen. Denn er wäre durch eine gelbe Karte (die zweite gelbe Karte im laufenden Wettbewerb) aus der ersten Halbzeit für das Pokalfinale gesperrt gewesen. Nach dem damaligen Regelwerk hätte Ordenewitz aber eine Rot-Sperre in der Bundesliga absitzen können, dann wäre er für das Finale spielberechtigt gewesen. In der Tat holte sich Ordenewitz wenige Minuten vor Ende der Partie seine rote Karte durch Wegschlagen des Balles ab. Von den Medien nach dem Spiel befragt, gab Rutemöller, im Gegensatz zu Frank ‘Otze' Ordenewitz, mit eben dem bewussten Zitat den Vorsatz seines Spielers und sein eigenes Einverständnis damit offen zu. Daraufhin wurde Ordenewitz vom DFB wegen unsportlichen Verhaltens trotzdem für das Pokalfinale gesperrt, Rutemöller musste 5.000 DM Strafe zahlen. Das DFB-Pokalfinale verlor der 1. FC Köln dann gegen Werder Bremen.

    Aha, Köln hat mal wieder verloren.
    Familie Müller hat eine Tochter bekommen. Trunken von Glück und Weingeist taumelt der Mann durchs Krankenzimmer.
    "Du musst gleich zur Zeitung und eine Geburtsanzeige aufgeben. Sie soll Uschi heissen."
    "Das kann ich mir nicht merken."
    "Denk einfach da unten dran und lass den ersten Buchstaben weg."
    In der Zeitung: Familie Müller freut sich über die Geburt ihrer Tochter Otze.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.