Потеря NSString - PullRequest
       18

Потеря NSString

0 голосов
/ 20 февраля 2011

Я копирую NSString из NSDictionary в локальный NSString, используя [[NSString alloc] initWithString:], обрабатывая его (удаляя некоторые символы), затем отправляя его внешнему объекту.

Я использовал два метода: [[MyObject alloc] initWithString:] и [myObject setString:]; ни одна из них не работает.

Они оба вызывают сбой моего приложения; когда я использую точку останова в данной области, я получаю пустое значение NSString; Я использую NSLog s с начала NSString, пока не отправлю его на мой объект; все они показывают правильное значение строки ...

Спасибо всем за ваш ценный вклад: -)

Ответы [ 3 ]

3 голосов
/ 20 февраля 2011

Замените вызов [[NSString alloc] initWithString:stringBeingCopied] на [[NSMutableString alloc] initWithString:stringBeingCopied], создав изменяемую строку, в отличие от неизменяемой ("нормальной") строки, которая не даст вызовам setString: вызвать сбой вашего приложения

Неизменяемые строки, будучи неизменяемыми, не отвечают на вызовы setString: - которые являются мутаторами NSString. Вместо этого создание NSMutableString, которое реализует setString:, позволит вам изменить строковый объект.

1 голос
/ 20 февраля 2011

Я использовал два метода a [[MyObject alloc] initWithString:] и [myObject setString:];ни работа.

Покажите свою работу!Не могу помочь, не показывая больше кода.В частности, как вы реализовали initWithString: и setString: в своем классе MyObject?

0 голосов
/ 20 февраля 2011

Строки обычно неизменны.Чтобы изменить строку, вам нужно NSMutableString.Либо выполните [string mutableCopy], либо сделайте это из метода initWithString.Возможно, вы уже сделали это, но, если возможно, опубликуйте свой код.Боюсь, что без нее трудно оказать дальнейшую помощь ...

...