NSSet в NSData, а затем снова обратно, для GameKit?

Я пытаюсь выполнить синхронизацию редактирования изображений между двумя приложениями, работающими на разных iPhone. Я хотел бы отправить NSSet * с одного устройства на другое (что, как я полагаю, включает инкапсуляцию в NSData), затем расшифровать его обратно в NSSet, а затем использовать его в функции типа touchesMoved. Возможно ли это, или я должен вместо этого поработать над синхронизацией UIImages? Я беспокоюсь, что синхронизация UIImage будет иметь слишком большую задержку для взаимодействия в реальном времени.

Спасибо за вашу помощь!


person Peter Hajas    schedule 20.03.2010    source источник


Ответы (1)


Я так понимаю, вы имеете дело с набором UITouch. Это не сработает, поскольку UITouch не реализует NSCoding (я думаю).

Вам нужно будет извлечь необходимую информацию из каждого UITouch, а затем поместить ее во что-то, что соответствует NSCoding.

NSSet * someSet = ...;
NSData * serializedSet = [NSKeyedArchiver archivedDataWithRootObject:someSet];

Затем отправьте эти данные с помощью игрового комплекта.

Другое устройство, когда оно получает данные, преобразует их обратно в набор.

NSData * receivedData = ....;
NSSet * set = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];

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

Кроме того, этот тип вещей будет работать только в том случае, если события касания, с которыми вы имеете дело, не имеют состояния, то есть не имеет значения, где раньше было касание. В противном случае это может вызвать проблемы. Может быть лучше извлечь представление о том, что изменилось после событий касания, а затем отправить это на другое устройство и обновить другое устройство только дельтами того, как изменился UIImage (другими словами, какой тип обработки имеет произошло с изображением на другом устройстве).

person Brandon Bodnar    schedule 20.03.2010
comment
Спасибо за вашу помощь! Есть ли способ сделать сравнения UIImage или проверить дельты между двумя UIImage? Кроме того, нужен ли UIImage imageWithData формат изображения JPG для работы? Мне кажется, что использование PNG вызывает у меня неприятные ощущения. Не думаю, что смогу передать прикосновения, потому что, к сожалению, полагаюсь на их состояние. Еще раз спасибо за ответ! - person Peter Hajas; 21.03.2010