self
- указатель непосредственно на объект. Таким образом, он разрешает одно и то же, независимо от того, где вы проверяете его в цепочке наследования. Не существует такого понятия, как указатель self
, который бы разрешал непосредственно в суперклассе - в этом разница между «школой расширения функциональности объекта» и «имеет».
Любые сообщения, отправленные на self
, всегда будут сначала отправляться в самый младший дочерний класс, а затем работать в соответствии с обычными правилами наследования. В результате вы не можете предоставить NSXMLParser
абсолютно ничего, что могло бы привести к тому, что методы делегата переместились бы прямо в суперкласс.
Я бы предположил, что то, что вы описываете с помощью обычного действующего лица, которое реализует большую часть логики, и отдельного действующего лица, которое выполняет вдвойне специфические особенности, само является шаблоном делегата. Итак, что вы, вероятно, хотите - это превратить то, что у вас есть как родительский, в свой собственный суверенный класс и присоединить то, что у вас есть как дочернее, к нему как к делегату. Просто используйте протокол NSXMLParserDelegate
для этих отношений делегирования, если это имеет смысл.