【问题标题】:How to pass a parameter of type NSMutableString如何传递 NSMutableString 类型的参数
【发布时间】:2020-02-04 01:54:34
【问题描述】:

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

我传递的文本参数如下:

[delegatee RequestExecuteCountLettersForString:@"XYZ"];

我收到了这个警告:

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

请告诉我如何解决这个警告以及为什么我不能将这样的文本输入传递给该方法。

【问题讨论】:

  • [delegatee RequestExecuteCountLettersForString:[@"XYZ" mutableCopy]];

标签: objective-c nsmutablestring


【解决方案1】:

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

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

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

两件事:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-07
    • 2021-04-17
    • 1970-01-01
    • 2016-04-25
    • 2021-08-03
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多