无法附加到NSMutableString

时间:2010-11-28 10:17:13

标签: objective-c nsstring nsmutablestring

@interface MainView : UIView { 
    NSMutableString *mutableString; 
}
@property (nonatomic, retain) NSMutableString *mutableString;
@end

@implementation MainView
@synthesize mutableString;

-(void) InitFunc {  
    self.mutableString=[[NSMutableString alloc] init];
 }

-(void) AppendFunc:(*NString) alpha { 
    [self.mutableString stringByAppendingString:@"hello"];
    NSLog(@"the appended String is: %@",self.mutableString);
    int len=[self.mutableString length];
}

嘿所有人,

我只是想知道我在哪里做错了? 。我试过这段代码但是“mutableString”没有附加任何值(因为“len”的值为'0'且NSLog没有为“mutableString”打印任何值),尽管我在网上搜索了解决方案,人们在同样的时尚,我不知道为什么我的代码不起作用。

先谢谢

MGD

3 个答案:

答案 0 :(得分:5)

stringByAppendingString:创建新字符串。请改用appendString:

[mutableString appendString:@“hello”]

答案 1 :(得分:3)

1)您的方法名称违反了命名约定:使用小写字母开头。

2)stringByAppendingString返回一个新字符串作为结果,不会修改您的原始字符串。您应该使用[self.mutableString appendString:@"hello"];代替。

3)您的init方法正在泄漏。您应该使用mutableString = [[NSMutableString alloc] init];而不使用点语法,否则将retain编辑(并且release将丢失)。

答案 2 :(得分:1)

哦,上帝,真是一团糟。 stringByAppendingString不会更改字符串,它会创建并返回一个新字符串:

// Sets str2 to “hello, world”, does not change str1.
NSMutableString *str1 = [NSMutableString stringWithString:@"hello, "];
NSString *str2 = [str1 stringByAppendingString:@"world"];

如果要更改可变字符串本身,请使用appendString方法:

// Does not return anything, changes str1 in place.
[str1 appendString:@"world"];

另外,这是泄密:

self.mutableString = [[NSMutableString alloc] init];

最好写成:

mutableString = [[NSMutableString alloc] init];

...因为在initdealloc is not the best idea中使用了访问者。