Одна вещь, которая, кажется, смущает многих людей какао, - это разница между переменными и объектами.
Вы должны иметь в виду, что когда вы объявляете переменную типа NSMutableString *mutable
, , вы не создаете строку . Это просто переменная-указатель типа NSMutableString*
. Конструктивно он такой же, как и любой другой указатель - и, как следует из термина «указатель», он просто указывает на то, что на самом деле живет в другом месте. Из-за этого вы технически можете назначить его для указания на любой объект. Но вы не превращаете этот объект в изменчивую строку - вы просто лжете о том, на какой объект указывает переменная. После того, как вы попытаетесь отправить объекту сообщение, на которое может ответить только NSMutableString, джиг закончился!
Как сказал Perspx, если у вас есть строка, которую вы хотите изменить, вы можете использовать метод mutableCopy
для получения - как вы уже догадались - изменяемой копии. Существует также множество методов NSString, которые не изменяют строку, но позволяют получить новую строку с некоторыми внесенными изменениями (например, stringByAppendingString:
). Вы можете пройти довольно длинный путь с ними.