Существует ли более простой способ обработки большого количества данных, изменяющихся в приложении ios? - PullRequest
3 голосов
/ 17 мая 2011

У меня есть приложение, над которым я работаю, и оно содержит несколько взаимосвязанных данных. По сути, у меня есть набор числовых полей, которые используются для вычисления других числовых полей, которые затем используются для вычисления других полей. Я пытаюсь определить наилучший способ обработки потенциально большого количества изменений.

Одним из решений, о котором я подумал, является то, что я могу переопределить установщики значений, которые могут быть изменены пользователем, чтобы выполнять вычисления, а затем соответствующим образом обновить другие значения в объекте данных. Самым большим недостатком этого является огромное количество (несколько шаблонного) кода, который необходимо написать.

Другое решение, о котором я подумал, - это использование Key-Value Observing для обработки изменений данных, а затем для обновления зависимых значений от этих изменений. Обратите внимание, что ни одно из зависимых значений не будет обновлено, за исключением случаев, когда обновляется независимое значение. Хотя я думаю, что это будет немного элегантнее, я обеспокоен потенциальными проблемами с производительностью или проблемами, которые я, возможно, не рассматриваю.

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

1 Ответ

1 голос
/ 25 мая 2011

У KVO не должно быть проблем с производительностью, если у вас не очень много полей или очень частых обновлений, но его API не самый лучший. Недостатком является то, что он направляет все уведомления с помощью одного метода. Это может или не может быть проблемой в зависимости от вашего количества и типов полей.

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

Существует также делегирование с протоколами , которое, будучи простым и более производительным, может быть довольно сложным в зависимости от того, как вы это делаете.

...