Objective c json框架:对stringWithObject执行错误访问

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,

更新:

我发现上一个错误的原因是文档中的错误

该方法应命名为proxyForJson,而不是jsonProxyObject

但我还是被卡住了

我现在在stringWithObject的某个地方发现了一个EXC\u BAD\u访问错误。有什么线索吗


更新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”