EXC_BAD_ACCESS 使用 GCM 3.0

EXC_BAD_ACCESS with GCM 3.0

我正在尝试将 GCM v3 集成到一个 cocos2d-x v3.6 项目中,经过几天使用 CocoaPods 和 Xcode,我终于能够构建应用程序。但是,当部署在设备上进行测试时,它会在调用 [[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:_gcmSenderID scope:kGGLInstanceIDScopeGCM options:_registrationOptions handler:_registrationHandler] 时崩溃并出现错误 EXC_BAD_ACCESS。给出了什么?

截图:http://i.imgur.com/s0HnxTp.png

我的配置如下:

daffodilistic$ pod --version 0.39.0.beta.4 daffodilistic$ cat Podfile platform :ios, '8.1' source 'https://github.com/CocoaPods/Specs.git' target 'project-redacted iOS' do pod 'Google/CloudMessaging' end target 'project-redacted Mac' do end

我设法调试并成功解决了异常 - 显然,它是由声明的 @property(nonatomic, retain) void (^registrationHandler) 块 属性 指向的 NULL0x00000000 值引起的早些时候根据 Google's sample GCM v3 code for iOS。至于是Xcode、iOS还是cocos2d-x导致块声明为dereferenced/deallocated,我不确定。

解决方案是将 (^registrationHandler) block declaration

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

相关 SO link 这很有用,但不是很重要:unable to register (com.google.iid error 1005.)