NSURLConnectionDataDelegate itself inherits from
NSURLConnectionDelegate which inherits from
That means that apart from implementing all the methods from
NSURLConnectionDelegate, you also have to implement all the
NSObjectProtocol (e.g. equality, hash).
You didn't implement them, that's your mistake. If you inherit from
NSObject, all that
NSObjectProtocol methods are
already implemented for you.