gpt4 book ai didi

ios - 为什么返回函数会发出SIGABRT信号?

转载 作者:行者123 更新时间:2023-12-03 08:54:38 25 4
gpt4 key购买 nike

我对 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];



谢谢。

编辑

我发现我的错误,我无法访问我必须强制转换mapdObj的 [[[mappedObj content] retain] autorelease];的内容。

最佳答案

尝试以下操作:

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

试试这个,对您有帮助。

关于ios - 为什么返回函数会发出SIGABRT信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com