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)
块 属性 指向的 NULL
或 0x00000000
值引起的早些时候根据 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.)
我正在尝试将 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)
块 属性 指向的 NULL
或 0x00000000
值引起的早些时候根据 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.)