Wow, the previous post is a year old, and still no change!
I have the same problem. I am trying to test in customer_address_save_before (or customer_address_save_after, whichever one works) to see if the address has changed. I need this to unset something from the customer session.
But I have simply NO way of telling wether an object has changed in Magento. isDirty and flagDirty should have been implemented!
And if I try to work around this caveat, by comparing _data and _origData (perhaps with their dumbed down dirty test method hasDataChangedFor), I discovered that _origData wasn’t populated on either occasion :(
How is that for making a programmers life impossible?
Oh, and btw, I also noticed that Magento does way too many object saves when there is absolutely no need to. Example:
If I click ‘checkout’ my debugger goes through a customer save with all its associated child objects being saved too. When I only request some data! Can you believe that?
Pffff, I am getting depressed here. If I don’t want to hack in core files, the only solution that’s left is to load up the address first from database, knowing that it will get loaded again later on by that core save action, and on top of all that: this whole operation will get called so many unnecessary times. I have never built something as bad and bloated like this in my life!