Str*_*ion 5 cocoa objective-c nsstring nsmutablestring
这有效:
NSString *myVar = @"whatever";
NSDecimalNumber *myNum = [NSDecimalNumber decimalNumberWithString:@"10"];
myVar = [myNum stringValue];
Run Code Online (Sandbox Code Playgroud)
这个带有可变字符串的版本产生警告"从不同的Objective-C类型分配":
NSMutableString *myVar = [NSMutableString stringWithString:@"whatever"]; //UPDATE: CORRECTED CODE
NSDecimalNumber *myNum = [NSDecimalNumber decimalNumberWithString:@"10"];
myVar = [myNum stringValue];
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,stringValue都返回一个NSCFString.不可变的NSString变量并不关心,可变的NSMutableString抱怨.
PS有人请为NSMutableString和stringValue添加标签.
-stringValue返回自动释放的NSString实例,即不可变对象.即使你将它分配给可变字符串指针,它也不会使字符串变为可变,你将无法在其上调用可变字符串方法(顺便说一下,第一个代码也是如此):
NSMutableString* tStr = @"lala";
[tStr appendString:@"lalala"]; // CRASH! Attempting to mutate immutable object
Run Code Online (Sandbox Code Playgroud)
处理它的正确方法是使用方便的方法创建可变字符串:
NSMutableString* tStr = [NSMutableString stringWithString:@"lala"];
[tStr appendString:@"lalala"]; // OK
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4183 次 |
| 最近记录: |