2014-11-12 19 views
7

Vì vậy, tôi đã cập nhật cách tôi xác thực người chơi cho người chơi trò chơi và tôi vẫn gặp sự cố khi khởi động.Vấn đề xác thực Gamecenter

Đây là phương pháp mới để tôi xác thực:

- (void) authenticateLocalPlayer 
{ 
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){ 
    if (viewController != nil) 
    { 
     NSLog (@"user not logged in to GC"); 
    } 
    else if ([GKLocalPlayer localPlayer].isAuthenticated) 
    { 
     NSLog(@"gamecenter authentication process succeeded"); 
    } 
    else 
    { 
     NSLog(@"user not authenicated"); 
    } 
}; 
} 

Dưới đây là những gì được hiển thị khi nó bị treo:

2014-11-12 16:20:43.295 ZombieConga[7492:881764] -[GKLocalPlayerInternal name]: unrecognized  selector sent to instance 0x7974b8c0 
2014-11-12 16:20:43.298 ZombieConga[7492:881764] *** Terminating app due to uncaught  exception 'NSInvalidArgumentException', reason: '-[GKLocalPlayerInternal name]: unrecognized selector sent to instance 0x7974b8c0' 
*** First throw call stack: 
(
0 CoreFoundation      0x01ef6946 __exceptionPreprocess + 182 
1 libobjc.A.dylib      0x01b8ea97 objc_exception_throw + 44 
2 CoreFoundation      0x01efe5c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277 
3 CoreFoundation      0x01e473e7 ___forwarding___ + 1047 
4 CoreFoundation      0x01e46fae _CF_forwarding_prep_0 + 14 
5 SpriteKit       0x01a20f82 -[SKNode isEqual:] + 124 
6 Foundation       0x015f5612 +[NSObject(NSDelayedPerforming) cancelPreviousPerformRequestsWithTarget:] + 345 
7 GameCenterFoundation    0x0b1ef11e -[GKPlayer postChangeNotification] + 45 
8 GameCenterFoundation    0x0b209aa8 __52-[GKDaemonProxy setLocalPlayer:authenticated:reply:]_block_invoke + 922 
9 libdispatch.dylib     0x0237a30a _dispatch_call_block_and_release + 15 
10 libdispatch.dylib     0x0239ae2f _dispatch_client_callout + 14 
11 libdispatch.dylib     0x0238190e _dispatch_main_queue_callback_4CF + 606 
12 CoreFoundation      0x01e5095e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14 
13 CoreFoundation      0x01e0f760 __CFRunLoopRun + 2256 
14 CoreFoundation      0x01e0ebcb CFRunLoopRunSpecific + 443 
15 CoreFoundation      0x01e0e9fb CFRunLoopRunInMode + 123 
16 GraphicsServices     0x036dc24f GSEventRunModal + 192 
17 GraphicsServices     0x036dc08c GSEventRun + 104 
18 UIKit        0x0019f8b6 UIApplicationMain + 1526 
19 ZombieConga       0x000f898d main + 141 
20 libdyld.dylib      0x023c6ac9 start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Tại sao nó bị rơi?

+0

thêm Điểm ngắt ngoại lệ Tất cả tôi nhận được khi mô tả lỗi tốt hơn – dragoneye

+0

@dragoneye Tất cả tôi nhận được khi tôi làm như vậy là: 2014-11-13 00:17 : 39.341 ZombieConga [7990: 971858] - [GKLocalPlayerInternal name]: bộ chọn không được nhận dạng được gửi tới ví dụ 0x7a920770 – user3593148

+0

xem http://stackoverflow.com/questions/25754403/skspritenode-pools-in-ios-8-seem-to- này được cấp phát-chồng-bộ nhớ – dragoneye

Trả lời

2

Giải pháp cho trò chơi của tôi khá lạ (tôi không hiểu hoàn toàn bản thân mình). Bằng cách di chuyển cuộc gọi đến [self authorizeLocalPlayer] cho đến sau này trong vòng đời, chẳng hạn như khi tôi khởi tạo SKScene đầu tiên, thay vì sớm trong -(void)viewDidLoad, nó đã ngăn chặn sự cố này.

Tôi tin rằng điều này có liên quan đến vấn đề với chủ đề nhưng tôi không chắc chắn. Một số thay đổi tôi đã thực hiện đối với mã, điều đó dường như không liên quan, phải làm với đa luồng gây ra điều này để phá vỡ một lần nữa (tôi phải thay đổi cuộc gọi thành performSelector:withObject:afterDelay: thành .

Về cơ bản, đây là một vấn đề khó theo dõi Xin lỗi tôi không thể cụ thể hơn: (

+0

Tôi đã có một performSelector: withobject: afterdelay trong cảnh menu chính của tôi, đó là cảnh đầu tiên tải. Bằng cách loại bỏ nó, nó bây giờ hoạt động. Vì một số lý do đó là những gì đã gây ra vụ tai nạn. – user3593148

+0

@ user3593148 Phải mất một lúc để giải quyết điều đó, bởi vì ai có thể nghĩ rằng bộ chọn thực hiện sẽ gây ra nó? Họ có vẻ không liên quan. – erdekhayser

Các vấn đề liên quan