Objective c json框架:对stringWithObject执行错误访问
更新: 我发现上一个错误的原因是文档中的错误 该方法应命名为proxyForJson,而不是jsonProxyObject 但我还是被卡住了 我现在在stringWithObject的某个地方发现了一个EXC\u BAD\u访问错误。有什么线索吗Objective c json框架:对stringWithObject执行错误访问,objective-c,json,json-framework,Objective C,Json,Json Framework,更新: 我发现上一个错误的原因是文档中的错误 该方法应命名为proxyForJson,而不是jsonProxyObject 但我还是被卡住了 我现在在stringWithObject的某个地方发现了一个EXC\u BAD\u访问错误。有什么线索吗 更新2: 我的proxyForJson实现是一个剪贴式文档: - (id)proxyForJson { return [NSDictionary dictionaryWithObjectsAndKeys: Navn,
更新2: 我的proxyForJson实现是一个剪贴式文档:
- (id)proxyForJson {
return [NSDictionary dictionaryWithObjectsAndKeys:
Navn, @"Navn",
Adresse, @"Adresse",
Alder, @"Alder",
nil];
}
试图使json序列化为我的自定义objective-c类工作 据我对文档的理解,如果自定义对象实现了该方法,json框架可以序列化它们 所以我有一节课:
@interface MyObject : NSObject {
NSString *Name;
NSString *Addresse;
NSInteger Age;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, assign) NSInteger Age;
- (id)jsonProxyObject;
@end
我尝试序列化一个数组,其中包含一些实例:
[json stringWithObject:list error:&error];
但我得到的只是以下错误:
“MyObject不支持JSON序列化”
我猜jsonWriter找不到我的jsonProxyObject方法是出于某种原因,为什么
尊敬。您是否尝试在可执行文件信息窗格中打开NSZombies和MallocStackLogging以检查EXC\u BAD\u访问的来源?如果没有,您可以尝试此操作并检查控制台的输出。
EXC\u BAD\u访问通常是由于过度释放某个对象而导致的错误。您是否尝试在可执行文件信息窗格中打开NSZombies和MallocStackLogging以检查EXC\u BAD\u访问的来源?如果没有,您可以尝试此操作并检查控制台的输出。
EXC_BAD_ACCESS通常是由于过度释放某个对象而导致的错误。我不确定这样做是否正确,但按如下方式定义类可以解决问题:
@interface MyObject : NSObject {
NSString *Name;
NSString *Addresse;
NSInteger *Age;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, retain) NSInteger *Age;
- (id)jsonProxyObject;
@end
然后将变量初始化为:
Age = [[NSNumber alloc] initWithInt:32];
我不确定这样做是否正确,但如下定义类解决了问题:
@interface MyObject : NSObject {
NSString *Name;
NSString *Addresse;
NSInteger *Age;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, retain) NSInteger *Age;
- (id)jsonProxyObject;
@end
然后将变量初始化为:
Age = [[NSNumber alloc] initWithInt:32];
在NSString中,没有
stringWithObject:
方法。您应该尝试改用stringWithFormat:
。在NSString中,没有stringWithObject:
方法。您应该尝试使用stringWithFormat:
。您可以展示一下proxyForJason的实现吗?当然可以。现在又增加了一个问题。你能解决这个问题吗?如果是,请您分享解决方案好吗?恐怕我没有解决问题。您能展示一下proxyForJason的实现吗?当然可以。现在又增加了一个问题。你能解决这个问题吗?如果是,请分享解决方案?恐怕我没有解决问题。MallocStackLogging在控制台中给出以下行:Json测试(22492)malloc:使用标准记录器将malloc堆栈记录到磁盘Json测试(22492)malloc:process 22451不再存在,从/tmp/stack-logs.22451.Json testing.ms0Jvs.index Json testing(22492)malloc中删除的堆栈日志:正在写入/tmp/stack-logs.22492.Json testing.JhgUjE.index的堆栈日志无法从堆栈日志中获得任何有用信息。。僵尸似乎没什么区别。嗯。。。我不确定你是如何使用malloc_历史选项的。尝试在调试模式下运行应用程序,等待它停止(错误发生)-不要终止应用程序,因为它将从此终止进程,打开终端输入:malloc_history PID MA,wer PID是进程ID,MA是内存地址(如0xa4e10)。这里提到的最后一个对象几乎就是造成问题的原因。我在环境选项中添加了MallocStackLogging=YES。在终端中键入malloc_历史记录也不会给我太多帮助。不过,我不确定我是否有正确的PID和addr。使用了我在activity monitor中找到的PID(用于Json测试,而不是模拟器桥)。对于addr,我使用了调试器标题中的一个值:“asm CFRetain 0x01b75900:json testing-Debugger”MallocStackLogging在控制台中提供以下行:json testing(22492)malloc:使用标准记录器将malloc堆栈记录到磁盘json testing(22492)malloc:process 22451不再存在,从/tmp/stack-logs.22451.Json testing.ms0Jvs.index Json testing(22492)malloc中删除的堆栈日志:正在写入/tmp/stack-logs.22492.Json testing.JhgUjE.index的堆栈日志无法从堆栈日志中获得任何有用信息。。僵尸似乎没什么区别。嗯。。。我不确定你是如何使用malloc_历史选项的。尝试在调试模式下运行应用程序,等待它停止(错误发生)-不要终止应用程序,因为它将从此终止进程,打开终端输入:malloc_history PID MA,wer PID是进程ID,MA是内存地址(如0xa4e10)。这里提到的最后一个对象几乎就是造成问题的原因。我在环境选项中添加了MallocStackLogging=YES。在终端中键入malloc_历史记录也不会给我太多帮助。不过,我不确定我是否有正确的PID和addr。使用了我在activity monitor中找到的PID(用于Json测试,而不是模拟器桥)。对于addr,我使用了调试器标题中的一个值:“asm CFRetain 0x01b75900:json testing-Debugger”