In Spring 16 I have used controls binded to collection values, and it's been working flawlessly until recent release

<aura:component >
<aura:handler name="init" value="{!this}" action="{!c.doInit}" />
<aura:attribute name="dynamicArray" type="Object[]"/>
        <aura:iteration items="{!v.dynamicArray}" var="item">
                <ui:inputCheckbox label="{!item.label}" value="{!item.value}" change="{!c.notifyChange}"/>

And in controller:

doInit: function(component, event, helper) {
    var defaultArr = [
        { label: "item1", value: false },
        { label: "item2", value: false },
        { label: "item3", value: false },
        { label: "item4", value: false },
        { label: "item5", value: false }
    component.set("v.dynamicArray", defaultArr);
    console.log("Default Array is Set", defaultArr);
notifyChange: function(component, event, helper) {
    console.log("Changed Value", event.getSource().get("v.value"));
    console.log("Updated Array", component.get("v.dynamicArray"));

Simply we bind collection's objects to control's value. And after we change it by user interaction - Lightning updates collection and rerenders it. But now it works only once, after first click on checkbox it updates collection, but all consequent click will not affect collection values. Looks like it loses references.