The contact and contact lost in rapid succession sounds like an issue with your objects' restitution property. This can sometimes result in an unending series of bounces.
If objects make and lose contact in very quick succession, sometimes SpriteKit loses track of what the right condition is (objects that have contact show as not having contact).
Try setting the restitution on both objects to zero.
(yourObjectName).physicsBody.restitution = 0;