Как передать параметр типа NSMutableString - PullRequest
0 голосов
/ 06 октября 2019

Я изучаю objective-c и, поскольку я пытаюсь передать параметр в метод RequestExecuteCountLettersForString, который принимает данные типа NSMutableString, я получил предупреждение.

Я передаю текстовый параметр какследующее:

[delegatee RequestExecuteCountLettersForString:@"XYZ"];

и я получаю это предупреждение:

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

пожалуйста, дайте мне знать, как исправить это предупреждение и почему я не могу передать такой текстовый ввод методу.

1 Ответ

1 голос
/ 06 октября 2019

Литерал @"XYZ" не является NSMutableString. Это NSString. Это то, что говорит вам ошибка.

Вам необходимо передать фактическую изменяемую строку.

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

Две вещи:

  1. Почему ваш метод принимаетизменяемая строка? Если идея заключается в том, что метод изменяет изменяемую строку, чтобы вызывающий мог использовать результат, то лучшим подходом является передача не изменяемой строки и метод должен использовать возвращаемое значение для возврата новой строки. Если единственная причина, по которой он принимает изменяемую строку, заключается в том, что метод внутренне вносит некоторые изменения, но вызывающий объект не должен знать об этих изменениях, то вам определенно не следует заставлять вызывающий элемент передавать изменяемую строку. Так или иначе, вероятно, неправильно иметь параметр NSMutableString вместо NSString.
  2. Имена методов должны начинаться со строчных букв. То же самое для переменных и свойств. Имена классов начинаются с заглавных букв.
...