我有以下代码
NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init];
NSMutableString *imobileNumberValue=[[NSMutableString alloc]init];
ibmcountryCodeLabel=@"555";
imobileNumberValue=@"333";
NSLog(@"Done1");
[ibmcountryCodeLabel appendString:imobileNumberValue];
NSLog(@"Done2");
虽然当我尝试将一个字符串与另一个字符串相加时,字符串都是可变的,但我得到“由于未捕获的异常而终止应用程序'NSInvalidArgumentException',原因:'尝试使用appendString来改变不可变对象:'”
阅读所有主题。但无法找到解决方案。请帮助我。谢谢你的时间
答案 0 :(得分:3)
问题是:这个赋值产生一个可变的字符串对象:
NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init];
然而,在此赋值之后,ibmcountryCodeLabel
指向的对象不再是可变的:
ibmcountryCodeLabel=@"555";
这是因为@"555"
常量是NSString
的不可变子类。尝试修改它会导致运行时错误。
按如下所示更改代码以解决此问题:
NSMutableString *ibmcountryCodeLabel=[NSMutableString stringWithString:@"555"];
NSMutableString *imobileNumberValue=[NSMutableString stringWithString:@"333"];