让我试着解释它更详细:
你有一个字符串变量.h
文件。鉴于没有负载你赋值为:
test = [NSString stringWithFormat:@"sample"];
在这段代码实际上happning什么是你的测试是一个自动释放的对象。当你使用这个和对象没有alloc
和init
这是自动释放对象,并将释放内存后,你占据它的方法。
为避免这种情况,您可以使用@ Mehul的解决方案通过创建属性。这是违反封装的概念。有时你有不想在课堂以外访问的对象,或者不想用对象显示。使用在这些条件下:
test = [[NSString stringWithFormat:@"sample"] retain]; // or
test = [[NSString alloc] initWithFormat:@"sample"];
这将让您的字符串活着,直到你释放它。
还有一种方法不好用,但想告诉你,这样你就可以更好地理解它。使用
test = @"sample";
如果你不想追加字符串或格式,使用它,你可以简单的字符串赋值给你NSString
对象。
使用此将有一个无限retainCount
您的测试变量。你可以使用它来避免崩溃,但这不是可取的,因为正如我所说的那样,有一个无限的retaiCount
你不能释放它,并在使用后释放你的内存。所以更早的方法更加正确。
对于所有使用类方法创建的自动释放对象,而不是使用init
,这是正确的。
希望这会让你更清楚。
初始化.h文件中属性还 – akk 2012-08-01 11:33:21
什么是控制台消息当它崩溃? – 2012-08-01 11:34:43
@RKK我初始化.h文件中的属性并在.m文件中合成 – Bala 2012-08-01 11:36:28