2013-02-25 17 views
7

के लिए भेजा मैं दृश्य SenderPlayerViewController का दृष्टांत और वस्तु "सत्र" पारित करने के लिए निम्नलिखित कोड का उपयोग कर रहा:copyWithZone-गैर मान्यता प्राप्त चयनकर्ता उदाहरण

- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState: GKPeerConnectionState)state { 
switch (state) { 
    case GKPeerStateConnected: 
     NSLog(@"Connected Central"); 
     if ([settings.playerType isEqualToString:@"SENDER"]){     
      SenderPlayerViewController *myViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"SenderPlayerViewController"]; 
      [self.navigationController pushViewController:myViewController animated:YES]; 
      myViewController.currentSession=session; 

     } 

     break;    
    case GKPeerStateDisconnected: 
     NSLog(@"Disconnected Central"); 
     self.currentSession = nil; 
     break; 
} 
} 

दृश्य SenderPlayerViewController के हेडर फ़ाइल है:

@interface CentralViewController : UIViewController { 
Settings *settings;} 
@property (nonatomic, copy) GKSession *currentSession; 

@end  

जब कोड निष्पादित होने पर मैं निम्नलिखित त्रुटि मिलती है:

[GKSession copyWithZone:]: unrecognized selector sent to instance 0x9661200 

और अधिक मदद की जरूरत है यहाँ ....

उत्तर

7

संपत्ति:

@property (nonatomic, copy) GKSession *currentSession; 

गलत है। GKSession एक प्रतिलिपि वस्तु नहीं है। तो आप बस को बनाए रखना द्वारा इसे करने के लिए एक संदर्भ हड़पने चाहिए:

@property (nonatomic, retain) GKSession *currentSession; 
0

आपका custome कक्षा GKSession NSObject का एक उपवर्ग होना चाहिए, और बेहतर होगा कि तुम methood कि NSCopy

प्रोटोकॉल में घोषित लागू होगी