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]];