package Ġcom . ms ab hi . shared . classic Ċ Ċ import Ġcom . ms ab hi . shared . Store Ċ import Ġcom . ms ab hi . shared . common . Action Ċ import Ġcom . ms ab hi . shared . common . State Ċ import Ġcom . ms ab hi . shared . common . State ChangeListener Ċ import Ġplatform . Foundation . NS Mutable Array Ċ import Ġplatform . Foundation . last Object Ċ import Ġplatform . Foundation . remove Object Ċ Ċ actual Ġclass ĠClass ic Store < S Ġ: ĠState > Ġactual Ġconstructor ( ĊĠĠĠ ĠinitialState : ĠS , ĊĠĠĠ Ġoverride Ġval Ġreduce : Ġ( Action , ĠS ) Ġ-> ĠS , ĊĠĠĠ Ġprivate Ġval Ġstate Change Listeners : ĠList < State ChangeListener < S >>, Ċ ) Ġ: ĠStore < S > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġactions Ġ= ĠNSMutable Array () ĊĊĠĠĠ Ġprivate Ġvar Ġstate : ĠS Ġ= ĠinitialState ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactions . add Object ( action ) ĊĠĠĠĠĠĠĠ Ġhandle ( actions . last Object () Ġas ĠAction ) ĊĠĠĠĠĠĠĠ Ġactions . remove Object ( actions . last Object ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstate (): ĠS Ġ= Ġstate ĊĊĠĠĠ Ġprivate Ġfun Ġhandle ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewState Ġ= Ġreduce ( action , Ġstate ) ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ!= ĠnewState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠnewState ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Change Listeners . forEach Ġ{ Ġit . invoke ( newState ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }