что-то должно содержать ссылку на одноэлементный объект target-c, чтобы сохранить его на протяжении всего жизненного цикла приложения IOS? - PullRequest
2 голосов
/ 19 октября 2011

что-то должно содержать ссылку на одноэлементный объект target-c, чтобы сохранить его в течение жизни приложения IOS?

Например, если в AppDelegate вы создали / создали экземпляр одноэлементного объекта, но неНе сохраните ли этот экземпляр (с переменными данными экземпляра) позже в приложении iPhone?

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

Ответы [ 2 ]

5 голосов
/ 19 октября 2011

Ни один класс не должен сохранять указатель на одноэлементный класс. Сам класс Singleton хранит указатель на свой экземпляр. По сути, когда пользователь хочет использовать синглтон, он запрашивает его через метод класса (по соглашению, часто начинающемуся с shared). Этот метод проверяет, был ли инициализирован синглтон. Если нет, он выполнит инициализацию. Если в памяти уже есть существующий экземпляр, он просто вернет его. Обычно одноэлементный объект будет жить в памяти на протяжении всего жизненного цикла приложения.

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

1 голос
/ 19 октября 2011

До тех пор, пока вы автоматически не освободите выделенный экземпляр, нет.

Для явного выделения требуется освобождение объекта для освобождения.Поэтому, если вы просто выделите экземпляр, объект останется в памяти.

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