首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SBJSON库崩溃

SBJSON库崩溃
EN

Stack Overflow用户
提问于 2011-10-22 04:16:15
回答 1查看 324关注 0票数 1

以下代码是从Stig Brautaset JSON库复制的-为了更清楚,我删除了注释。

代码语言:javascript
复制
@interface NSString (NSString_SBJSON)

- (id)JSONFragmentValue;
- (id)JSONValue;

@end

当我调用以下命令时会崩溃:

代码语言:javascript
复制
NSString *jsonString = [request responseString];
...
NSDictionary *results = [jsonString JSONValue];//here is the crash with invalid selector.

我添加了以下内容:

代码语言:javascript
复制
if (![jsonString respondsToSelector:@selector(JSONValue)]) 
{
   NSLog(@"fix this!!!\n");
}

消息就会显示出来。你知道为什么这个函数没有被调用吗?

谢谢!

编辑:我将JSON框架编译为静态库。调用是在同一个库中进行的。当我将它编译为exe时,它运行起来没有任何问题。

EN

回答 1

Stack Overflow用户

发布于 2011-10-22 04:37:49

您需要使用-ObjC链接器选项将静态库和最终可执行文件链接起来。

-JSONValue方法作为文件NSString+SBJSON.m文件中NSString类的一个类别来实现。由于Objective-C中动态运行时的工作方式,静态库中定义的类别不会加载,除非您使用-Objc标志进行链接。如果类别没有加载,那么动态绑定就会失败,你会得到可怕的“不响应选择器”异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7854785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档