What are the primary differences between weak and unowned references, and how do they prevent retain cycles in iOS code for Peloton interactive?