обработка одноэлементного объекта - PullRequest
0 голосов
/ 12 марта 2012

Извините, что задал простой и некоторые более важные вопросы. У меня есть одноэлементный класс, который уже существует в моем приложении (к сожалению, я не реализовал этот класс). Теперь я проверяю весь код проекта, используя анализатор синглтон-класс, показывающий утечку памяти. Я не уверен, что код правильный или нет, потому что обрабатывать синглтон-класс очень сложно. пожалуйста, проверьте на скриншоте singleton

В моем проекте мы вызываем [className sharedDataSource]; много раз. Пожалуйста, дайте мне некоторые знания по этому заранее Спасибо.

Ответы [ 2 ]

1 голос
/ 12 марта 2012

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

Короче говоря, все вызовы alloc, в свою очередь, вызывают allocwithzone, и в этом allocwithzone есть условие, которое гарантирует, что alloc произойдет только один раз. Согласитесь, реализация довольно шаткая. Однако существует довольно много разных способов реализации синглтона, о чем свидетельствует здесь , если вам захочется рефакторинг позже или даже просто для академического интереса.

1 голос
/ 12 марта 2012

Я думаю, что это правильно.Думайте об этом с точки зрения того, что делает синглтон.Singleton - это класс, который живет, и существует только один экземпляр для всего приложения.Это целенаправленная утечка памяти.Этот класс объявлен и не должен быть освобожден, чтобы он был доступен позже.

Если вы используете этот шаблон в target-c, я думаю, что вы несете ответственность за очистку памяти, когда синглтон больше не нужен.

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