как реализовать синглтон в линк-с для iphone - PullRequest
1 голос
/ 29 июня 2011

Я хочу сделать свой объект синглтоном в приложении iPhone. Как правильно реализовать это в target-c.

Ответы [ 4 ]

2 голосов
/ 29 июня 2011

Вот как я это делаю.

+(MyClass*) mySingleton 
{
     static MyClass* theSignleton = nil;

     @synchronized([MyClass class])
     {
         if (theSingleton == nil)
         {
             theSingleton = [[MyClass alloc] init];
         }
     }
     return theSingleton; 
}

Это не мешает людям случайно создавать не синглтонные экземпляры, но я думаю, что лучше спроектировать свой класс так, чтобы не синглтоны не нарушали класс, ачем пытаться остановить не одиночек.Это облегчает их обработку в модульных тестах.

1 голос
/ 29 июня 2011

Взято из

Синглтон-классы - важная концепция для понимания, поскольку они демонстрируют чрезвычайно полезный шаблон проектирования.Эта идея используется в iPhone SDK, например, в UIApplication есть метод sharedApplication, который при вызове из любого места возвращает экземпляр UIApplication, относящийся к текущему приложению.

Реализация одноэлементных классов в Objective- С.

0 голосов
/ 29 июня 2011

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

0 голосов
/ 29 июня 2011

Я использую тот, что написан Мэттом Галлахером http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html. Его очень просто использовать, и запись в блоге является своего рода полным учебником.

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