"Me" oh "My" ---- Why?

I don’t understand why the use of “me” or “my” is necessary in some cases. In a purely AS sense, where they are used inside a tell block to refer to the script, I get that. But outside of tell blocks, I don’t understand why they are necessary sometimes. In my project using bindings and a table view to input weather data (modeled after Shane’s Coming_To_Florida project), I have the following code(theData is bound to the content array of the array controller and the values of newLow, newHigh, etc. are bound to text fields):

on addData_(sender)
		theData's addObjectsFromArray_({{aDate:today, lowTemp:newLow, highTemp:newHigh, rainAmount:newRain, comment:newComment}})
		set my theData to theData
		set my newLow to missing value
		set my newHigh to missing value
		set my newRain to missing value
		set my newComment to missing value
		lowField's |window|()'s makeFirstResponder_(lowField)
		set tomorrowMonth to month of ((current date) + 1 * days) as string
		if monthString is not equal to tomorrowMonth then --Dumps theData out to a Numbers file at the end of each month
		end if
	end addData_

If I take the “my” out of the line “set my theData to theData”, the new data doesn’t show up in the table, but if you close the project and look at the plist file where I write the data, the new data is actually there and shows up the next time you open the project. Likewise, if you remove the “my” from “set my newLow to missing value”, the text field that the value of newLow is bound to, doesn’t get cleared (or doesn’t appear to any way). Since theData and newLow are both properties of the script, I don’t understand what putting “my” in front of them does.

The “my” makes the changes KVO compliant. It’s like the difference in ObjectiveC of changing an ivar directly as opposed to using an accessor – only the latter will be noticed by bindings. How it works, I don’t know, but using my is roughly equivalent to wrapping the line in willChangeValueForKey: and didChangeValueForKey: