iOS 提交长文本时应用崩溃

iOS app crashing when submitting long text

我的应用是电子商务应用。当我从 iOS 添加新产品时,如果我用英语填写描述字段,它会 post 产品成功,但是当我尝试阿拉伯语并单击提交按钮后,它会与线程 1 崩溃:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 可以看到详情Here...

我发现问题出在这个方法上,所以 resultString 不接受长文本,现在我想让它接受长文本,当我使用 po malloc() 检查时,我得到了这个错误

A​​ddressSanitizer:请求的分配大小 0x6110003a6500(调整对齐、红色区域等后为 0x6110003a7500)超过最大支持大小 0x10000000000(线程 T0)

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script {
    
    __block NSString *resultString = nil;
    __block BOOL finished = NO;
    

    [editorView evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
        if (error == nil) {
            if (result != nil) {

                resultString = [NSString stringWithFormat:@"%@", result];
            }
        } else {
            NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
        }
        finished = YES;
    }];

    while (!finished)
    {
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
    }
        return resultString;
}

我通过保留 resultString 来解决这个问题,如下面的代码所示,我不知道这是否是一个好的做法,但它目前有效。

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script {

__block NSString *resultString = nil;
__block BOOL finished = NO;


[editorView evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
    
    if (error == nil) {
        if (result != nil) {

            resultString = [NSString stringWithFormat:@"%@", result];
            [resultString retain];
        }
    } else {
        NSLog(@"evaluateJavaScript error : %@ll", error.localizedDescription);
    }
        finished = YES;
    
     
}];


while (!finished)
{
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}

return resultString;