model view controller - How to notify parent class from child? -


i'm trying resolves 1 architectural issue, want find best suitable approach.

i have game scene gamelayer.h view in case. have gameengine class i'm trying controller. have custom egg class derived ccnode , timer logic implemented via schedule in egg class. have many egg object on game scene added via addchild method. gameengine.m imports gamelayer.h, , gamelayer.m imports egg.h

after timer in each egg runs out, want notified, i.e run actions, increase score etc. question best way implement such situation. want obey mvc rule quick solutions comes in mind are

  1. include gamelayer.h in egg class , call update method in it. update view (self) , notify gameengine save new score.
  2. include gamelayer.h in egg class , call update method in it. in update method call update method in gameengine.h , gameengine save score, , update gamelayer (the view)
  3. implement kvo. problem never done before, don't know observer should gamelayer or gameengine

please help, examples appreciated

more options:

1. use nsnotificationcenter. eggs post notifications, , gamelayer observe.

2. use protocol. example:

// in egg.h  @class egg; @protocol eggdelegate // example method -(void)egg:(egg *)egg hadsomethinghappen:(int)parameter; @end  @interface egg: ccnode @property (weak) id<eggdelegate> delegate; @end  // in egg.m /// happened , delegate has notified? [self.delegate egg:self hadsomethinghappen:somenumber]; 

then declare gamelayer support protocol:

@interface gamelayer : cclayer <eggdelegate> 

implement protocol's methods in gamelayer , make delegate of egg objects:

// somewhere in gamelayer egg *egg = [egg node]; egg.delegate = self;  ...  //protocol implementation -(void)egg:(egg *)egg hadsomethinghappen:(int)parameter { // } 

Popular posts from this blog

How to calculate SNR of signals in MATLAB? -

c# - Attempting to upload to FTP: System.Net.WebException: System error -

ios - UISlider customization: how to properly add shadow to custom knob image -