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