AQAppStateMachine is a free and open source application state machine, based on matching values within bitfields to trigger actions supplied using Blocks.
AQAppStateMachine is designed to assist the development of applications with some fairly intricate state requirements.
The idea is that the state itself is stored as an n-bit bitfield, and that the application can define certain ranges of this bitfield to refer to state flags. These flags can be combinatory or mutually exclusive, or hell, they could just be integers.
The state machine itself is designed for an app which needs to, say, do Task A, but only if B has been initialized, C has failed to initialize, and D is not currently happening, along with E, F, and G each being in one or more of a number of states.
AQAppStateMachine makes no guarantees that your states will be mutually exclusive - it won't hold your hand, and can 'deadlock' at will if you don't pay attention.
· Apple Xcode