Singleton Safety с + (пустой) нагрузкой - PullRequest
2 голосов
/ 31 августа 2011

Я только что просмотрел заголовочные файлы для NSObject и создаю синглтон-класс. У меня проблема в том, что он должен загружаться в основном с самого начала приложения, так как синглтон поддерживает состояние приложения, наблюдая за NSNotifications и сообщая о текущем состоянии по запросу.

Моим решением было использовать метод +(void)load в NSObject. Когда класс загружается в память, я собирался переопределить метод загрузки и выделить синглтон на этом этапе.

Документация от Apple не дает понять, безопасно ли вызывать [[*class* alloc] init] во время загрузки метода. Я бы вообще предположил, что это так, если это не было задокументировано, но учитывая важность этого элемента и тот факт, что я загружаю его каждый раз при запуске приложения, я хотел бы знать, что кто-нибудь знает, безопасно ли это или нет, просто для уверенности.

Большое спасибо за любую помощь.

1 Ответ

4 голосов
/ 31 августа 2011

Это зависит от того, что именно делает ваш класс (и его суперклассы), когда вы вызываете init.В течение load другие классы не гарантируются быть доступными.Если вашему классу init не нужны никакие другие классы, вы можете сойти с рук.

Было бы гораздо безопаснее сделать это в + (void)initialize, а при необходимости вызватьфункция настройки во время запуска приложения (например, с application:didFinishLaunchingWithOptions: на iOS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...