Синглтон-объекты Objective-C и глобальные переменные - PullRequest
1 голос
/ 27 марта 2011

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

В моем приложении для iPhone есть несколько глобальных переменных - некоторые из них я объявил и дал значения в классе, но другие должны быть установлены во время процесса входа в систему (например, токен), которые затем должны быть доступны для жизненного цикла приложения. из любого класса или метода. Мне сказали, что я действительно должен использовать объект Singleton для всего этого, который я предполагаю, является классом, который создается при запуске. Если да, может ли кто-нибудь дать мне самый простой пример такого заголовка и файла реализации и как / где я должен его создать? Тогда мне нужно иметь некоторые строки, которые устанавливаются с выключенного, и другие, которые можно установить / получить позже?

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 27 марта 2011

Эта ссылка показывает некоторый код для создания одноэлементного класса: http://www.galloway.me.uk/tutorials/singleton-classes/

Вы бы использовали что-то вроде:

[[MyManager sharedManager] doSomething];

При вызове sharedManager будет получен один экземпляр класса (или, если вы вызываете его впервые, он будет создан) - это гарантирует, что у вас есть только один из них:)

Он также отменяет освобождение, сохранение, автоматическое восстановление и т. Д., Чтобы гарантировать, что вы не сможете случайно избавиться от sharedManager по ошибке!

Этот класс создаст себя при первом использовании, но если вам нужно, чтобы он был создан при запуске, просто позвоните [MyManager sharedManager], и он создаст его для вас.

Вы определяете класс как любой другой класс target-c - просто добавьте свойства и т. Д.

Надеюсь, это поможет:)

3 голосов
/ 27 марта 2011

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

Вот предыдущий вопрос SO , который может помочь.

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