为什么返回函数产生SIGBART信号



我是objective c的新手。我不明白为什么我的函数不起作用,它在函数返回时产生SIGBART错误。

+ (NSArray*) jsonToArray:(NSString*)jsonString
{
    id mappedObj = nil;
    RKObjectMappingProvider* mapProv = [[RKObjectMappingProvider alloc] init];
    RKObjectMapping* answerMapping = [SMAnswersWrapper entityMappingForSerializer];
    answerMapping.objectClass = [NSMutableDictionary class];
    [mapProv setSerializationMapping:answerMapping forClass:[SMAnswersWrapper class]];
    RKObjectMapping *proofsEntityMapping = [SMEntityArrayWrapper entityMappingWithContentMapping:answerMapping];
    [mapProv setMapping:proofsEntityMapping forKeyPath:@""];
    if (jsonString)
    {
        id obj = [jsonString objectFromJSONString];
        if (obj)
        {
            RKObjectMapper* mapper = [[RKObjectMapper alloc] initWithObject:obj mappingProvider:mapProv];
            RKObjectMappingResult* res = [mapper performMapping];
            mappedObj = [res asCollection];
            [mapper release];
        }
    }
    [mapProv release];
    return [[[mappedObj content] retain] autorelease];
}

错误位置在这一行:

return [[[mappedObj content] retain] autorelease];

谢谢。

编辑

我发现我的错误,我无法访问[[[mappedObj content] retain] autorelease];的内容,我不得不转换mapappedobj .

尝试如下:

+ (NSArray*) jsonToArray:(NSString*)jsonString
{
    id mappedObj = nil;
    RKObjectMappingProvider* mapProv = [[RKObjectMappingProvider alloc] init];
    RKObjectMapping* answerMapping = [SMAnswersWrapper entityMappingForSerializer];
    answerMapping.objectClass = [NSMutableDictionary class];
    [mapProv setSerializationMapping:answerMapping forClass:[SMAnswersWrapper class]];
    RKObjectMapping *proofsEntityMapping = [SMEntityArrayWrapper entityMappingWithContentMapping:answerMapping];
    [mapProv setMapping:proofsEntityMapping forKeyPath:@""];
    if (jsonString)
    {
        id obj = [jsonString objectFromJSONString];
        if (obj)
        {
            RKObjectMapper* mapper = [[RKObjectMapper alloc] initWithObject:obj mappingProvider:mapProv];
            RKObjectMappingResult* res = [mapper performMapping];
            mappedObj = [res asCollection];
            [mapper release];
        }
    }
    [mapProv release];
    if (mappedObj)
    {
        return [[[mappedObj content] retain] autorelease];
    }
    return [NSArray array];
}

在您的代码中,如果jsonStringobj将为nil,则mapappedobj将不会初始化。这种情况可能导致访问[mappedObj content]时崩溃。

试试这个,这将帮助你.....

我发现我的错误,我无法访问[[[mappedObj content] retain] autorelease];的内容,我不得不转换mappedObj.

最新更新