为什么返回功能发出SIGBART信号?

问题描述:

我是目标新手。 我不明白为什么我的函数不起作用,它使函数返回时出现错误SIGBART。为什么返回功能发出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];访问的内容,我不得不投mappedObj。

+0

检查主文件并检查'UIApplicationMain'是否正常。否则在代码上放置断点并检查错误位置。 – Esha

+0

也在'[mapProv setMapping:proofsEntityMapping forKeyPath:@“”]; '你需要提供一个合适的键路径“Key”值。 – Esha

+2

我也真的建议你移动到'ARC' – rckoenes

我发现我的错误,我不能在[[[mappedObj content] retain] autorelease];访问的内容,我不得不投mappedObj。

尝试以下操作:

+ (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将是零,mappedObj不会被初始化。这种情况在访问[mappedObj content]时可能会导致崩溃。

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

+0

谢谢,我已经找到了错误,我不能访问的内容没有施放我的目的。 – MohamedAli