在 iOS 中调用 Google Toolbox for Mac NSString 类别方法时无法识别的选择器

Posted

技术标签:

【中文标题】在 iOS 中调用 Google Toolbox for Mac NSString 类别方法时无法识别的选择器【英文标题】:Unrecognized selector on calling Google Toolbox for Mac NSString category method in iOS 【发布时间】:2011-02-10 12:30:33 【问题描述】:

我正在构建一个用于 ios 项目的静态库,并且我想解码从 Web 服务返回的 XML 实体。我已获取 Google Toolbox for Mac 并将以下文件添加到我的项目中:

GTMDefines.h GTMNSString+html.h GTMNSString+HTML.m

然后在我自己的 .m 文件中我这样做:

#import "GTMNSString+HTML.h"

// then in one of my methods:
NSString *value = [anotherNSStringValue gtm_stringByUnescapingFromHTML];

代码编译得很好,但是当我运行使用我的静态库的应用程序时,它会因NSInvalidArgumentException 而崩溃,并抱怨gtm_stringByUnescapingFromHTML 选择器无法识别NSString

2011-02-10 12:21:38.401 MyApp[20356:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString gtm_stringByUnescapingFromHTML]: unrecognized selector sent to instance 0x71403e0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x0111bbe9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x012705c2 objc_exception_throw + 47
    2   CoreFoundation                      0x0111d6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x0108d366 ___forwarding___ + 966
    4   CoreFoundation                      0x0108cf22 _CF_forwarding_prep_0 + 50
    5   MyApp                               0x00028dcf -[GSMyAppXMLParser parseData:] + 714
    // Rest of stack trace removed
)
terminate called after throwing an instance of 'NSException'

我在 Stack Overflow 上发现了一些类似的问题,并且在每种情况下,提问者随后都评论说他们通过调整链接器设置来修复它 - 但没有透露哪个设置!如果有人可以帮助我,我将永远感激不尽!

【问题讨论】:

【参考方案1】:

我猜那是 -ObjC-all_load 标志。

您将这些添加到链接库的应用程序的“其他链接器标志”中,而不是库本身。

欲了解更多信息,请参阅:http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html

【讨论】:

说真的..我仍然没有得到这么多的构建配置和标志!!

以上是关于在 iOS 中调用 Google Toolbox for Mac NSString 类别方法时无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章

使用 google toolbox for mac 编译单元测试时出错

google-toolbox-for-mac iphone 单元测试:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME" 命令 /bin/sh 失败,退出代码

ArcObject SDK for Java调用自定义toolbox工具

Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法

Google Sign In 调用 App Delegate 中的方法后关闭 View Controller (iOS / Swift)

使用docker toolbox 在windows上搭建统一环境