Always declare delegates as weak. Strong pointers to delegates are one of the main reasons objects don't get deallocated when you would expect them to.