如何传递 NSMutableString 类型的参数

How to pass a parameter of type NSMutableString

我正在学习 objective-c,当我试图将参数传递给接受类型 NSMutableString 数据的方法 RequestExecuteCountLettersForString 时,我收到了一条警告。

我按如下方式传递文本参数:

[delegatee RequestExecuteCountLettersForString:@"XYZ"];

我收到此警告:

Incompatible pointer types sending 'NSString *' to parameter of type 
'NSMutableString *'

请告诉我如何修复此警告以及为什么我无法将此类文本输入传递给该方法。

文字 @"XYZ" 不是 NSMutableString。这是一个 NSString。这就是错误告诉您的内容。

您需要传递一个实际的可变字符串。

NSMutableString *str = [NSMutableString stringWithString:@"XYZ"]; // or [@"XYZ" mutableCopy];
[delegatee RequestExecuteCountLettersForString:str];

两件事:

  1. 为什么你的方法采用可变字符串?如果想法是该方法修改可变字符串以便调用者可以使用结果,那么更好的方法是传入一个非可变字符串并让该方法使用 return 值 return 一个新字符串。如果它采用可变字符串的唯一原因是因为该方法在内部进行了一些更改但调用者不需要知道这些更改,那么您绝对不应该让调用者传入可变字符串。因此,无论哪种方式,参数 NSMutableString 而不是 NSString.
  2. 可能是不正确的
  3. 方法名称应以小写字母开头。变量和属性相同。 Class 名称以大写字母开头。