Похоже, что много кода Objective-C в настоящее время использует синглтоны. многие люди жалуются на Синглтон, например Google ( Куда делись все синглтоны? ), их коллеги-инженеры все равно используют его: http://code.google.com/mobile/analytics/docs/iphone/
I знаю, что у нас уже есть некоторые ответы в Stack Overflow, но они не полностью специфичны для Objective-C как динамического языка: в Objective C есть категории, а во многих других языках их нет.
Так каково ваше мнение? Вы все еще пользуетесь синглтоном? Если да, то как сделать приложение более тестируемым?
Обновлено : я думаю, нам нужно использовать коды в качестве примера для более конкретного обсуждения, поэтому многие обсуждения SO основаны на теории без единой строчки кода.
Давайте использовать SDK Google Analytics для iOS в качестве примера:
// Initialization
[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-0000000-1"
dispatchPeriod:kGANDispatchPeriodSec
delegate:nil];
// Track page view
[[GANTracker sharedTracker] trackPageview:@"/app_entry_point"
withError:&error];
Красота приведенного выше кода заключается в том, что вы инициализировали его с помощью метода « startTrackerWithAccountID », вы можете запускать метод " trackPageview " во всех ваших приложениях без прохождения конфигураций.
Если вы считаете, что Singleton плохой, можете ли вы улучшить приведенный выше код?
Большое спасибо за ваш вклад, счастливой пятницы.