Я сделал класс, и этот класс имеет 100 статических методов - PullRequest
0 голосов
/ 30 ноября 2011

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

Пожалуйста, решите мою проблему.

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Есть ли у него метод non-static также?

если нет, то class следует сделать static.

если да, я скажу, что дизайн можно улучшить.

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

0 голосов
/ 02 декабря 2011

Если вы действительно хотите, чтобы эти программы были доступны в многократно используемом контексте, напишите их как обычные внешние функции C или C ++ и добавьте их в библиотеку для использования в других проектах. Затем повторно введите или оберните их по мере необходимости. Я знаю - это не популярный ответ среди разработчиков objc, но по крайней мере он гораздо лучше масштабируется, когда вы начинаете иметь действительно сложные кодовые базы.

Но класс не является статичным, поэтому я хочу спросить, все ли методы постоянно находятся в памяти приложения или нет.

Да, и эти методы не могут быть удалены. Когда вы используете их в других проектах, вы платите за все. С помощью функций они могут быть удалены, и вы платите только за то, что фактически используете в программе. В частности, память функции или метода существует в двоичном коде и в памяти программы только один раз - экземпляры не клонируют методы, на них ссылаются и ищут с помощью таблицы диспетчеризации во время выполнения (например, vtable). Каждый экземпляр класса обращается к своим селекторам только через эту таблицу, поэтому количество методов не увеличивает его. Память в этом случае редко (если вообще) вызывает беспокойство.

Или это плохое программирование. пожалуйста, предложите мне.

Это очень необычно и свидетельствует о том, что что-то пошло не так в дизайне.

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