NSString может не отвечать на добавление строки

У меня есть NSMutableString, и я пытаюсь использовать метод appendString. Хотя он работает нормально, но каждый раз, когда я его использую, я получаю предупреждение NSString может не отвечать на добавление строки. Это мой код:

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

    [soapResults appendString: string];        //soapResults is an NSMutableString in .h
}  

Я знаю, что получаю это предупреждение из-за строки NSString, но как удалить это предупреждение?


person Nitish    schedule 06.09.2011    source источник


Ответы (3)


Если вы уверены, что soapResults является на самом деле NSMutableString и имеет только предупреждение, просто приведите его перед вызовом appendString::

[(NSMutableString*)soapResults appendString: string]; 

Если вы объявили soapResults как NSMutableString, но на самом деле повлияли на него NSString, то, вероятно, у вас не будет предупреждения, но при выполнении будет ошибка времени выполнения.

Если soapResults является NSString (либо потому, что вы объявили его таким, либо потому, что вы применили к нему NSString), вы можете вместо этого создать новый NSString, добавив к нему строку, а затем создать из него mutableCopy... но я < strong>не рекомендуется этого делать, так как это приведет к бесполезному выделению памяти (и NSMutableString лучше этого избегать)

person AliSoftware    schedule 06.09.2011
comment
Большое спасибо. Но поскольку AppleVijay ранее опубликовал правильный ответ, я должен принять его ответ :) - person Nitish; 06.09.2011

Просто на данный момент кода soapResults не является NSMutableString. Возможно, где-то еще в коде он случайно заменен на NSString.

Кроме того, NSString действительно является NSMutableString по коду, хотя NSMutableString является подклассом NSString. Это может помочь объяснить, что происходит в коде.

Тем не менее, приведение NSString к NSMutableString не очень хорошая идея, что действительно нужно сделать, так это найти, где оно становится NSString, и исправить это.

person zaph    schedule 06.09.2011

person    schedule
comment
stringByAppendingString, который вернет NSString. поэтому нам нужно вручную указать NSMutableString* - person Vijay-Apple-Dev.blogspot.com; 06.09.2011
comment
взгляните на этот stackoverflow.com/questions /5894910/ - person Vijay-Apple-Dev.blogspot.com; 06.09.2011
comment
@nitish, добро пожаловать. но отвечайте на вопросы других, пока они просят или просят. еще раз спасибо. хорошего дня. - person Vijay-Apple-Dev.blogspot.com; 06.09.2011
comment
Извините за мой предыдущий комментарий (который я удалил с тех пор): я не видел mutableCopy в вашем коде (он был за кадром и не имел полосы прокрутки, чтобы сообщить мне). Очевидно, что с mutableCopy ваш код работает (даже если он генерирует бесполезные выделения для этого - создание новой NSString, а затем ее mutableCopy - чем изменять существующую NSMutableString) - person AliSoftware; 06.09.2011
comment
@AliSoftware все мы не гении в Objective c., но пытаемся сделать ... вот и все. так что не извиняйтесь !!!. вы молодцы - person Vijay-Apple-Dev.blogspot.com; 06.09.2011