Hi.
From looking at the code, it seems the ObjectInCell and spawnTable aren’t getting cleared out, the former when you do onBtnRelease(), since that cell is being vacated, and the latter during a combine. So there may be some “ghosts” still there, giving you false positives.
Also, the onComplete listener will be provided the transitioned object as its parameter, so you don’t really have to do the loop in combineObjects(). Also, stationary objects might end up detecting “collisions” with themselves that way, i.e. object == other.
Other stuff:
You don’t need to nil object and other in combineObjects(). They’re just parameters, and will go away on their own.
You might have some luck just making spawnTable a group. Then you get management for free when you remove the objects (though this probably matters less in light of the onComplete note), though your tracker logic would be slightly different, say as spawnTable.numChildren - 1 and spawnTable.numChildren?
Since you know which column / row the balls will land on, you could just stash the respective numbers in each ball before its transition. Then you wouldn’t have to loop over all the columns and rows in combineObjects().