2010-03-20 68 views
9

我正在嘗試在不同iPhone上運行的相同應用程序之間進行一些圖像編輯同步。我想從一個設備發送一個NSSet *到另一個設備(我想它涉及封裝在NSData中),然後將其解密爲NSSet,然後在touchesMoved類型的函數中使用它。這是可行的,還是我應該工作同步UIImages?我擔心UIImage同步會有太多的實時交互延遲。NSSet到NSData,然後再退出GameKit?

感謝您的幫助!

回答

14

我想你正在處理一組UITouchs的。這不會工作,因爲UITouch不實施NSCoding(我認爲)。

您將需要提取出你從每個UITouch所需要的信息,然後把該到的東西,符合NSCoding。

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

然後使用遊戲工具包發送此數據。

另一臺設備,當它得到的數據,將它轉換回一組。

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

,那麼你會要求你需要自己去處理該組什麼都法。由於您可能在此更改某些UI組件,因此請確保調用選擇器以在主線程中運行。

而且,這種類型的東西只會工作,如果你正在處理的觸摸事件是無狀態的,這意味着它不會無論身在何處觸摸以前。否則,這可能會導致一些問題。這可能是更好的把解壓出來的觸摸事件之後發生了什麼變化的想法,然後發送該給另一臺設備,只有更新的怎樣的UIImage改變了增量的其他設備(換句話說,什麼類型的處理髮生在另一臺設備上的圖像)。

+0

感謝您的幫助!有沒有辦法做UIImage比較或檢查兩個UIImages之間的增量? 另外,會UIImage imageWithData需要JPG圖像格式的工作?使用PNG似乎給我留下了深刻的印象。 我不認爲我將能夠傳輸接觸,因爲我依靠自己的狀態很遺憾。 再次感謝您的回答! – 2010-03-20 22:24:20