достижимость и синглтон - PullRequest
0 голосов
/ 11 марта 2011

Как сделать так, чтобы достижимость работала как синглтон? Вот что я хочу сделать ...

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

Я знаю, что вопрос очень общий, но я так растерялся. Я в настоящее время использую достижимость 2,2

Любые советы или идеи или даже руководства будут оценены.

И последний вопрос .... Насколько «моральным» является использование синглтона? И лучше ли быть ближе к модели MVC?

Еще раз спасибо

1 Ответ

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

Синглтоны в порядке. Достижимость может быть очень ощутимой. Вы должны знать о документе «Создание экземпляра синглтона» в Руководстве Apple по основам какао , но внимательно прочитайте текст . Код, который они представляют, редко является тем, что вам нужно, и может вызвать больше проблем, чем решить. Это уместно только в тех случаях, когда неправильно иметь несколько копий объекта (неправильно, потому что объект управляет уникальным ресурсом, например). В этих случаях я предпочитаю утверждать в -init, а не перегружать allocWithZone:, потому что я бы скорее заставил разработчика сделать правильный вызов (+sharedInstance), чем спокойно исправить его для них, и пусть они думают, что они создали два экземпляра, когда фактически есть один (по крайней мере, в случаях, когда синглтон является изменяемым или содержит состояние).

В этом вопросе есть отличное обсуждение хороших одноэлементных паттернов. Я предпочитаю ответ @Robbie Hanson в моем собственном коде, потому что он дешево ориентирован на многопоточность.

...