Обычное поведение для синглтона состоит в том, что, если ему нужен внутренний экземпляр, он создает один первый раз, когда на него ссылаются. (Я думаю, это то, что вы говорите, но это не явно.) Если это так, то кажется, что объект, который должен иметь его в качестве делегата, должен просто назначать его всякий раз, когда этот объект создается. Таким образом, часть инициации создания другого объекта будет:
self.delegate = [MySingleton sharedInstance];
Я не уверен, что это имеет значение, но есть ли причина делать его делегатом, вместо того, чтобы просто использовать его всякий раз, когда объект нуждается в чем-то вроде: [[MySingleton sharedInstance] doSomething];
?