9

異なるiPhoneで実行されている同じアプリの2つ間で画像編集の同期を実行しようとしています。NSSet *をあるデバイスから別のデバイスに送信し(NSDataにカプセル化することを想定しています)、これを復号化してNSSetに戻し、touchesMovedタイプの関数で使用したいと思います。これは実行可能ですか、それとも代わりにUIImagesの同期に取り組む必要がありますか?UIImageの同期では、リアルタイムの対話には待ち時間が長すぎるのではないかと心配しています。

ご協力いただきありがとうございます!

4

1 に答える 1

14

私はあなたがUITouchのセットを扱っていると思います。UITouchはNSCodingを実装していないため、これは機能しません(私は思います)。

各UITouchから必要な情報を抽出し、それをNSCodingに準拠するものに配置する必要があります。

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

次に、ゲームキットを使用してこのデータを送信します。

もう一方のデバイスは、データを取得すると、それをセットに変換し直します。

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

次に、セットを自分で処理するために必要なメソッドを呼び出します。ここで一部のUIコンポーネントを変更する可能性があるため、必ずセレクターを呼び出してメインスレッドで実行してください。

また、このタイプの処理は、処理しているタッチイベントがステートレスである場合にのみ機能します。つまり、タッチが以前にどこにあったかは関係ありません。そうしないと、これによりいくつかの問題が発生する可能性があります。タッチイベント後に何が変更されたかのアイデアを抽出し、これを他のデバイスに送信して、UIImageがどのように変更されたか(つまり、どのタイプの処理が行われたか)のデルタでのみ他のデバイスを更新する方がよい場合があります他のデバイスの画像に発生しました)。

于 2010-03-20T07:38:56.647 に答える