的NSMutableString帮助目标C
目前,我有以下代码:的NSMutableString帮助目标C
-(void) inputNumber:(int)number {
NSString *str;
str = [NSString stringWithFormat:@"%d", number];
[strVal appendString:str];
txtShowNum.text = strVal;
}
我已经定义的NSMutableString * strVal
;之前在我的代码。
当上面的函数执行领域保持空白,但如果我是使用方法:
txtShowNum.text = str;
我得到我的意思的价值,但我显然需要级联的价值。
任何人都可以对此有所了解。
感谢
你应该在你的代码分配一个NSMutableString
也被称为这个方法在什么地方。
E.g.像这样:
-(void) inputNumber:(int)number {
if (strVal == nil) strVal = [[NSMutableString alloc] init];
NSString *str = [NSString stringWithFormat:@"%d", number];
[strVal appendString:str];
txtShowNum.text = strVal;
}
然而这里有一些内存问题。你最好strVal
一个保留的性质,然后做:
if (self.strVal == nil) self.strVal = [NSMutableString string];
这似乎已解决了输出的问题,但现在当再次调用该方法时,它只会崩溃应用程序。该代码中有什么会使应用程序崩溃? – 2011-04-04 16:26:16
如果字符串未保留,则此代码会使应用程序崩溃。你有一行在你的头文件中说'@property(nonatomic,retain)NSMutableString strVal;',并且你使用'self.strVal = ...'吗?然后它不应该崩溃。 – mvds 2011-04-04 16:32:21
谢谢,这就是问题所在,它也需要实现中的@synthesize,如果其他人来阅读这个问题,那么只需要注意一下。 – 2011-04-04 16:37:49
你strVal
是最有可能nil
,让你在零基本上什么事情都不叫appendString:
,并设置文本字段以零将其删除内容。
如果你只是宣布它作为一个成员变量,一定要初始化它的地方:
的NSMutableString * strVal = @ “”;
如果不是,您只需调用一个无对象的方法。
当你说定义时,你的意思是它已经被初始化或者只是被声明了吗?像:NSString * strVal = @“”; ? – kailoon 2011-04-04 16:26:55