This seems to be a deliberate decision of the Clang static analyzer, as can be seen in the source code
http://clang.llvm.org/doxygen/RetainCountChecker_8cpp_source.html
01424 // If one of the arguments in the selector has the keyword 'delegate' we
01425 // should stop tracking the reference count for the receiver. This is
01426 // because the reference count is quite possibly handled by a delegate
01427 // method.
It is also explained in the history
https://llvm.org/viewvc/llvm-project?view=revision&revision=158532
[analyzer] RetainCount: don't track objects init'd with a delegate
We already didn't track objects that have delegates or callbacks or objects that are passed through void * "context pointers". It's a not-uncommon pattern to release the object in its callback, and so the leak message we give is not very helpful.