Your delegate properties should be marked as weak. Using assign you would get a dangling pointer if the delegate is deallocated.