Что корректный метод должен разделить singleton-класс на подклассы в Цели-C?

Я создал singleton-класс, и я хочу создать класс, который является подклассом этого singleton-класса, что корректный метод должен сделать это

14
задан Peter Hosey 29 September 2011 в 14:43
поделиться

2 ответа

Если Джон не убедил вас не делать этого, вы должны сделать это следующим образом:

В своем суперклассе запустите экземпляр синглтона с [[[self class] alloc] init] , поэтому вы всегда получаете экземпляр класса, с которым вы вызываете метод sharedInstance. И вам не нужно перезаписывать метод sharedInstance в своем подклассе.

 [SuperClass sharedInstance] //-> instance of SuperClass
 [SubClass sharedInstance] //-> instance of Class
13
ответ дан 1 December 2019 в 06:27
поделиться

Я не знаю, в частности, об Objective-C, но в целом одноэлементные классы должны предотвращать создание подклассов. Если у вас есть экземпляр базового класса и экземпляр подкласса, то у вас фактически есть два объекта, которые вы можете рассматривать как экземпляры базового «одноэлементного» класса, не так ли?

Как только у вас есть два экземпляра, это уже не синглтон ... и это не учитывает возможности того, что существует несколько подклассов или что сам подкласс позволяет создавать несколько экземпляров.

Конечно, вы можете изменить свой базовый класс, чтобы у него был только способ получить один экземпляр «по умолчанию», но это не совсем то же самое, что сделать его синглтоном.

20
ответ дан 1 December 2019 в 06:27
поделиться