Ios textField:ShouldChangeCharactersRange:replacementString:正在传递一个nil参数

Ios textField:ShouldChangeCharactersRange:replacementString:正在传递一个nil参数,ios,objective-c,uitextfielddelegate,Ios,Objective C,Uitextfielddelegate,如标题所述,我有一个UITextField,正在使用textField:shouldChangeCharactersRange:replacementString:委托方法 我从用户那里得到了一个崩溃日志,因为传入replacementString的字符串参数是nil。当然,我可以简单地执行nil检查以避免崩溃,但我想知道为什么字符串是nil 有人能想出字符串为nil的原因吗?我试图删除所有字符,但无法复制该案例。 如果这有帮助的话,用户主要是日本人。我认为这可能是一个unicode问题,但没有

如标题所述,我有一个
UITextField
,正在使用
textField:shouldChangeCharactersRange:replacementString:
委托方法

我从用户那里得到了一个崩溃日志,因为传入
replacementString
的字符串参数是
nil
。当然,我可以简单地执行
nil
检查以避免崩溃,但我想知道为什么字符串是
nil

有人能想出字符串为
nil
的原因吗?我试图删除所有字符,但无法复制该案例。 如果这有帮助的话,用户主要是日本人。我认为这可能是一个unicode问题,但没有成功

有关崩溃日志的信息:

  • 用户正在使用iOS 11.2
  • 源代码在Objective-C中。令我惊讶的是,根据Swift文档,传递的参数不应该是
    nil
  • 代码崩溃
->说明:**-[\uu NSCFString StringByReplacingCharactersRange:withString::]:nil参数

实际代码如下所示:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *text = [textField.text stringByReplacingCharactersInRange:range
                                                             withString:string];

   ... some other code...

    return YES;

}

你能显示崩溃日志吗?我用代码编辑了问题。我想知道这是否有帮助: