a) yes, this started out as a ring buffer.

differences:
1) if there are too many messages, drop them on the floor
2) when you are getting off the buffer, go backwards like a stack vs from the front like a queue.
    Going back until you find the identifier provided by apple
3) I would prefer to use something like celluloid's implementation.