Да. На UIButton есть метод -setTitle:forState:
, использующий это.
В общем, нет, я не думаю, что замедление происходит из-за сериализации XML; 2 МБ не такой большой, и это не должно вызывать серьезного замедления.
Меня больше беспокоит то, что руководитель группы говорит вам, из-за чего происходит замедление, не предоставляя вам какой-либо конкретной информации профилирования. что это так. Мнения об оптимизации часто ошибочны; профилирование существует для того, чтобы точно определить, где в приложении происходит замедление. Я бы порекомендовал инструментировать и профилировать приложение, а также найти, где замедление; Готов поспорить, дело не в сериализации XML.
Xml-сериализация не использует атрибут Serializable. Сериализатор xml фактически генерирует сборку, которая отображает xml на объект, но не использует отражение. Это одна из причин, по которой сериализация Xml работает только с общедоступными
. Вы можете попробовать измерить с помощью DataContractSerializer
, который является частью WCF. Было бы интересно увидеть разницу.
Я никогда не сталкивался с ограничениями производительности лично, но у меня также нет больших объектов, таких как ваше описание.
Одна вещь, на которую следует обратить внимание, - это конструктор, который вы используете для создания XmlSerializer
некоторые из них не кэшируют сгенерированную сборку, что приведет к потере производительности и утечке памяти, поскольку каждый вызов будет генерировать все больше и больше сборок. В этом случае у вас есть два варианта:
1) Кэшировать созданный вами экземпляр сериализатора. Я считаю, что это потокобезопасно, но вы захотите дважды проверить MSDN.
2) Используйте другой конструктор для создания XmlSerializer.