城市飞艇在呼叫起飞时坠毁

问题描述 投票:0回答:6

使用 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'

当在

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

这方面有什么帮助吗? 谢谢

ios objective-c ios7 urbanairship.com nsjsonserialization
6个回答
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


0
投票

来源似乎没有发生:https://github.com/urbanairship/ios-library


0
投票

您必须包含这两个库:

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

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


0
投票

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

• 从 https://github.com/urbanairship/ios-library 下载源代码直接到您的应用程序文件夹中(不要使用其网站上提供的 .zip)

• 将 Airship 文件夹拖放到项目中(不要使用 AirshipLib 文件夹)

不要链接任何

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

• 繁荣。它正在工作。

希望它能帮助其他一些长期以来寻求解决此问题的人。


0
投票

补充一下,我的问题是我将

-ObjC
标志添加到
project
,并且应该将其添加到
target
设置中。

此外,如果无法编译,还有另一种选择

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

还应该添加到目标中。填写你的库的真实路径而不是

<PathToYourLib>


0
投票

如果您使用cocoapodsXcode 15, 在您的 Podfile 中添加/更新此内容以

platform :ios, '12.0'
© www.soinside.com 2019 - 2024. All rights reserved.