Я пытаюсь сделать некоторую синхронизацию редактирования изображения между двумя из того же приложения, работающего на различных iPhone. Я хотел бы отправить NSSet * от одного устройства до другого (который я воображаю, вовлекает инкапсуляцию в NSData), затем дешифрующий этот назад к NSSet, затем с помощью него в touchesMoved типе функции. Действительно ли это выполнимо, или я должен работать над синхронизацией UIImages вместо этого? Я волнуюсь, что синхронизация UIImage имела бы слишком много задержки для взаимодействия в реальном времени.
Спасибо за помощь!
Я так понимаю, вы имеете дело с набором UITouch. Это не сработает, так как UITouch не реализует NSCoding (я думаю).
Вам нужно будет извлечь необходимую информацию из каждого UITouch и затем поместить ее в нечто, соответствующее NSCoding.
NSSet * someSet = ...;
NSData * serializedSet = [NSKeyedArchiver archivedDataWithRootObject:someSet];
Затем отправить эти данные с помощью игрового набора.
Другое устройство, получив данные, преобразует их обратно в набор.
NSData * receivedData = ....;
NSSet * set = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];
Затем вы вызываете любой метод, который вам нужен для обработки набора. Поскольку вы, скорее всего, будете изменять некоторые компоненты пользовательского интерфейса, убедитесь, что вызов селектора выполняется в основном потоке.
Кроме того, этот тип вещей будет работать только в том случае, если события касания, с которыми вы имеете дело, являются stateless, то есть не имеет значения, где касание было раньше. В противном случае это может вызвать некоторые проблемы. Возможно, лучше извлечь идею о том, что изменилось после событий касания, а затем отправить ее на другое устройство и обновить на другом устройстве только дельты изменения UIImage (другими словами, какой тип обработки произошел с изображением на другом устройстве).