While using notifications, adhere to the following guidelines. Using notifications that violate these guidelines may result in unpredictable results for your application.
You can count on commandWillStart() being fired before commandEnded(), and beginInsert() being fired before endInsert(). Relying on any other sequences may result in problems for your application if the sequence is changed when new notifications are introduced or existing ones are rearranged.
If you tie your application to this level of detail, your application may fail in future releases.
Instead of relying on sequences, rely on notifications to indicate the state of the system. For example, when you receive erased(kTrue) notification on object A, it means that object A is erased. If you receive erased() notification on A followed by an erased() notification on B, it means only that both objects A and B are erased. The system does not guarantee that B will always be erased after A.
Similar interpretations apply to notifications on database reactors, editor reactors, and transaction reactors.