Objective c 使用addObject向NSMutableArray添加字符串时出现问题
我搜索了其他问题,似乎找不到类似的问题。要么我完全错了,要么我是瞎子。但代码是这样的:Objective c 使用addObject向NSMutableArray添加字符串时出现问题,objective-c,nsmutablearray,osx-mavericks,nsmutablestring,Objective C,Nsmutablearray,Osx Mavericks,Nsmutablestring,我搜索了其他问题,似乎找不到类似的问题。要么我完全错了,要么我是瞎子。但代码是这样的: @autoreleasepool { NSMutableString *sense = [[NSMutableString alloc] init]; NSMutableArray *senses = [[NSMutableArray alloc] init]; 。。。。。。。初始化rL和计数/长度的其他代码 for (index=0;index<count;index++)
@autoreleasepool {
NSMutableString *sense = [[NSMutableString alloc] init];
NSMutableArray *senses = [[NSMutableArray alloc] init];
。。。。。。。初始化rL和计数/长度的其他代码
for (index=0;index<count;index++) {
for (j=0;j<length;j++) {
c = [rL characterAtIndex:j];
switch (c) {
case '.':
[senses addObject:sense];
[sense setString:@""];
break;
default:
[sense appendFormat:@"%c",c];
break;
}
}
}
}
for(index=0;index直接解决方案可能是更改:
[senses addObject:sense];
致:
这将添加唯一的实例,而不是反复添加相同的可变字符串
但您似乎正在使用“.”字符作为分隔符拆分字符串
有一个更简单的方法:
NSArray *senses = [rl componentsSeparatedByString:@"."];
就是这样-一行。“sense”始终是同一个对象。它是一个可变字符串,因此内容可以更改,但它始终是同一个对象。因此sense将多次包含该单个对象。您可以使用
[senses addObject:[sense copy]];
我以为我错过了什么。谢谢,这正是我想要的。
[senses addObject:[sense copy]];