8

使用 Xcode 5.0 升级到 UrbanAirship 3.0.0,调用此代码时出现错误:

[UAirship takeOff:config];

错误是

+[NSJSONSerialization stringWithObject:]: unrecognized selector sent to class 0x3b2ca9fc
2013-09-19 15:02:31.981 [178:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSJSONSerialization stringWithObject:]: unrecognized selector sent to class 0x3b2ca9fc'

当在 中将键“inProduction”设置为“YES”时,这似乎没有出现AirshipConfig.plist,因为调用 takeOff: 填充 UAirShip 的实例是有意义的。这似乎是由于类别NSJSONSerialization+UAAdditions

对这个有帮助吗?谢谢

4

5 回答 5

16

要解决此问题,您必须在项目构建设置中的“其他链接器标志”中包含“-ObjC”标志。

UAirship 库 3.x 现在使用 Objective-C 类别,因此必须设置此标志以避免运行时异常。

可以在此处找到有关此问题的详细信息:

https://developer.apple.com/library/mac/qa/qa1490/_index.html

更新了文档:

http://docs.urbanairship.com/build/ios.html#build-settings http://docs.urbanairship.com/topic_guides/ios_migration.html#linker-flags

于 2013-09-20T17:27:36.127 回答
0

您必须包含两个库:

  • libUAirship-3.0.0.a
  • libUAirship-iOS5-3.0.0.a

您必须为各自的 iOS 使用任一库

于 2013-09-20T06:41:21.570 回答
0

在查看了不同的解决方案后,事实证明这可以解决问题:

• 从https://github.com/urbanairship/ios-library直接将源下载到您的 App 文件夹中(不要使用他们网站上提供的 .zip)

• 在您的项目中拖放 Airship 文件夹(不要使用 AirshipLib 之一)

不要链接任何libUAirship-3.0.0.alibUAirship-iOS5-3.0.0.a

• 繁荣。它正在工作。

希望它会帮助其他一些寻求解决这个问题的人。

于 2013-09-20T12:06:07.420 回答
0

只是补充一下,我的问题是我在 中添加了-ObjC标志project,它应该添加到target设置中。

另外,如果不能编译,还有另一个选项

-Wl,-force_load,<PathToYourLib>/libUAirship-4.0.0.a    

也应该添加到目标中。填写您的 lib 的真实路径,而不是<PathToYourLib>.

于 2014-07-10T00:42:43.227 回答
0

源头不会发生接缝:https ://github.com/urbanairship/ios-library

于 2013-09-19T18:09:29.230 回答