Weak references to delegate and datasource

Assign references throw EXC_BAD_ACCESS when a deallocated object is accessed.

Weak references became nil when the object gets deallocated, preventing crashes.