2014-09-22 87 views
0

刚装iOS8上我的设备上,我现在收到此错误:iOS8上GKLocalPlayerInternal无法识别的选择

-[GKLocalPlayerInternal name]: unrecognized selector sent to instance 0x1b6e3f80 

我没有看到有ios7安装了两个其他设备此错误。在我的设备与iOS8上安装我已经验证了GameCenter的沙箱转到设置中启用 - > GameCenter的 - >检查“沙盒”

我可以通过注释掉下面这段代码避免错误:

// after checking that game center is available and authentication handler has not already been set, set the authentication handlers 
[localPlayer setAuthenticateHandler:(^(UIViewController* viewController, NSError *error) { 

    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 

    if (!error && viewController) 
    { 
     [self showAuthenticationDialogWhenReasonable: viewController fromBaseViewController:baseController]; 
    } 
    else if (localPlayer.isAuthenticated) 
    { 
     [self authenticatedPlayerandShowPopUpIfUnable:showPopUp]; 
    } 
    else 
    { 
     [self disableGameCenterandShowPopUpIfUnable:showPopUp]; 
    } 
})]; 

堆栈跟踪显示此:

  • thread #1: tid = 0x4011c, 0x3775ec64 libobjc.A.dylib`objc_exception_throw, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x3775ec64 libobjc.A.dylib`objc_exception_throw 
frame #1: 0x2a0b6188 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 188 
frame #2: 0x2a0b40a6 CoreFoundation`___forwarding___ + 714 
frame #3: 0x29fe6208 CoreFoundation`_CF_forwarding_prep_0 + 24 
frame #4: 0x2d3ff688 SpriteKit`-[SKNode isEqual:] + 164 
frame #5: 0x2ad039fe Foundation`+[NSObject(NSDelayedPerforming) cancelPreviousPerformRequestsWithTarget:] + 358 
frame #6: 0x30d9b872 GameCenterFoundation`-[GKPlayer postChangeNotification] + 38 
frame #7: 0x30daed20 GameCenterFoundation`__52-[GKDaemonProxy setLocalPlayer:authenticated:reply:]_block_invoke + 848 
frame #8: 0x0062faea libdispatch.dylib`_dispatch_call_block_and_release + 10 
frame #9: 0x0062fad6 libdispatch.dylib`_dispatch_client_callout + 22 
frame #10: 0x006334f6 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 810 
frame #11: 0x2a076be8 CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8 
frame #12: 0x2a0752e8 CoreFoundation`__CFRunLoopRun + 1512 
frame #13: 0x29fc3620 CoreFoundation`CFRunLoopRunSpecific + 476 
frame #14: 0x29fc3432 CoreFoundation`CFRunLoopRunInMode + 106 
frame #15: 0x313710a8 GraphicsServices`GSEventRunModal + 136 
frame #16: 0x2d5ad808 UIKit`UIApplicationMain + 1440 
frame #17: 0x0019ddd0 ReconInForce`main(argc=1, argv=0x003c4a5c) + 116 at main.m:16 

在这个问题上有什么想法?

在此先感谢!

回答

0

找到了解决办法:似乎并不像这个问题是关系到游戏中心注册这么多...

我有一点的代码,把形式:

-(void) setAnnimationsPlaying:(BOOL)annimationsPlaying{ 

    ...some other code... 

    _annimationsPlaying = annimationsPlaying; 

    if (annimationsPlaying) 
     [self performSelector:@selector(xyz) withObject:nil afterDelay:0.1]; 

} 

-(void) xyz{ 

    if (!self.annimationsPlaying) 
     return; 

    ...some other code... 

    [self performSelector:@selector(xyz) withObject:nil afterDelay:6.0]; 

} 

更换该代码与这种形式的东西解决了我的问题:

-(void) setAnnimationsPlaying:(BOOL)annimationsPlaying{ 

    ...some other code... 

    _annimationsPlaying = annimationsPlaying; 

    if (self.annimationsPlaying) { 
     [self xyz]; 
     self.timer = [NSTimer scheduledTimerWithTimeInterval:6.0f target:self selector:@selector(xyz) userInfo:nil repeats:YES]; 
    }else{ 
     [self.timer invalidate]; 
    } 

} 

-(void) xyz{ 

    if (!self.annimationsPlaying) 
     return; 

    ...some other code... 

} 

希望帮助!!