2009-06-30 7 views
5

ठीक है, मैं अपनी खुद की GKSession ऑब्जेक्ट बनाने की कोशिश कर रहा हूं और प्रतिनिधि विधि मुझे कंसोल में एक त्रुटि दे रही है कि मुझे अभी तक ठीक करने का तरीका नहीं पता है। मैं सोच रहा था कि क्या किसी को कोई सुझाव था या इस समस्या का सामना करना पड़ा था? * बस एक नोट - परिवर्तनीय पीयरस्टैटस को मेरे कोड में कहीं और परिभाषित किया गया है। सहकर्मी को या तो "केसरवर" या "के क्लाइंट" की स्थिति दी जा सकती है। मैं प्रत्येक को GKSessionModeServer या GKSessionModeClient में परिभाषित करना चाहता हूं क्योंकि मैंने पढ़ा है कि यदि सहकर्मी GKSessionModePeer में है, तो प्रदर्शन समय वास्तव में धीमा है क्योंकि इसे क्लाइंट और सर्वर दोनों का काम करना है।GKSession समस्याएं - उद्देश्य-सी गेमकिट

- (GKSession *)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type { 
    if (peerStatus == kServer) { 
     GKSession *session = [[GKSession alloc] initWithSessionID:@"Josh_Land" displayName:nil sessionMode:GKSessionModeServer]; 
     return [session autorelease]; 
    } 
    else { 
     GKSession *session = [[GKSession alloc] initWithSessionID:@"Josh_Land" displayName:nil sessionMode:GKSessionModeClient]; 
     return [session autorelease]; 
    } 
} 

पूरे त्रुटि कोड है: 31:: 41.892 GKTank [17,756: 20b]

बंदरगाह 56,386 2009-06-30 10 पर सुनकर न आया हुआ अपवाद 'GKInvalidArgumentException' की वजह से *** समाप्त एप्लिकेशन , कारण: 'GKSessionModePeer मोड के साथ एक vaild GKSession ऑब्जेक्ट की आपूर्ति की जानी चाहिए, या -PerPickerController के कार्यान्वयन में डिफ़ॉल्ट GKSession ऑब्जेक्ट रिटर्न' शून्य 'बनाने के लिए: sessionForConnectionType:। आपूर्ति की गई वस्तु थी: 0 डेटा पैकेट भेजे गए: जल्दी (0 पैकेट 0 बाइट्स): भरोसा करें (0 पैकेट 0 बाइट्स): rtry (0 पैकेट 0 बाइट्स): बेक (0 पैकेट 0 बाइट्स): वर्तमान भारित औसत आरटी (0 एमएस) सत्र मोड: 0 ' 2009-06-30 10: 31: 41.893 GKTank [17,756: 20b] स्टैक: ( 807,902,715, +२४५२४४६७७९, 807,986,683, 807,986,522, 927,035,842, 927,037,074, 927,038,407, 815,223,834, 927038949, 9245, 8562, 814,709,201, 815,110,321, 815,119,058, 815,114,270, 814,813,151, 814722763, 814,748,641, 839,148,405, 807,687,520, 807,683,624, 839,142,449, 839,142,646,)

+0

यदि आप जो त्रुटि प्राप्त कर रहे हैं उसे पोस्ट करना उपयोगी होगा। –

+0

क्षमा करें, मैंने अब त्रुटि कोड के साथ पोस्ट संपादित किया है। यह वास्तव में काम करता है अगर मैं दोनों के लिए GKSessionModePeer में GKSession को कॉन्फ़िगर करता हूं, लेकिन मैं उस फ़ॉर्म को दूर रहने की कोशिश कर रहा हूं। मैं सर्वर या क्लाइंट मोड में या तो सत्र को निर्दिष्ट करने के लिए नामित करता हूं। मैं सोच रहा था कि क्या यह अभी भी संभव है (जहां यह अभी निकला है, कोड में कुछ बग हो सकता है ??) या यह मेरा कोड है? –

+0

मुझे जवाब भी नहीं पता है, लेकिन क्या आपने यह देखने के लिए परीक्षण किया है कि यह वास्तव में किसी भी तरह से धीमा है या नहीं? यदि आपने इसे केवल धीमा पढ़ा है, लेकिन वास्तव में इसे प्रदर्शन से नहीं देखा गया है तो यह समयपूर्व अनुकूलन भी हो सकता है। उसने कहा, यह देखना दिलचस्प होगा कि आपके परीक्षण में क्या गलत हो रहा है। –

उत्तर

7

मैं वास्तव में कुछ भी अभी तक GameKit का उपयोग कर, लेकिन सिर्फ प्रलेखन से अधिक की तलाश में लागू नहीं किया है, यह की तरह लग रहा यदि आप GKSessionModePeer का उपयोग कर रहे हैं तो आप केवल GKPeerPickerController का उपयोग कर सकते हैं। यदि आप GKSessionModeServer/क्लाइंट का उपयोग करना चाहते हैं, तो आपको सीधे सत्र और उनके प्रतिनिधि के साथ काम करने की आवश्यकता है। गेम किट प्रोग्रामिंग गाइड में Implementing a Server और Connecting to a Service पर अनुभाग देखें।

आपका मुख्य कार्यक्षमता GKSessionDelegate विधि
दोनों क्लाइंट और सर्वर मोड में -session:peer:didChangeState: और
-acceptConnectionFromPeer:error: और -denyConnectionFromPeer: सर्वर मोड में चारों ओर घूमना होगा।

+0

आह धन्यवाद, मैं कोशिश करूँगा और परिणामों की रिपोर्ट करूंगा। –

+0

सेब के साथ जांच करने के बाद, आप सही हैं। –

संबंधित मुद्दे