0
假设我有一个已经通过alloc/init组合初始化为字符串的变量。如果我通过处理重新分配内存,是否会泄漏内存?重新分配变量时是否有内存泄漏?
NSString *s = [[NSString alloc] initWithString:someOtherStringVariable];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
这里是否存在内存泄漏?如果是这样,我是否需要创建另一个变量(例如s2),执行此分配,然后释放原始?现在
NSString *s = [[NSString alloc] initWithString:someOtherStringVariable];
NSString *s2 = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[s release];
,如果其他字符串就是一个常数,如@“其他的一些字符串”。我需要担心泄漏吗?即。
NSString *s = [[NSString alloc] initWithString:@"Some other string"];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
感谢
谢谢。你指出的例子是名义上的。我以为我曾经在某处读过,在任何情况下都有为字符串字面量分配内存,所以它永远不会被释放。所以它的保留数是无关紧要的。 – farhadf 2009-08-10 17:59:21
的确,您不必释放/手动记忆管理字符串文字。但是,在你的代码中,你不要直接赋值字符串,而应该在[NSString alloc]之前。只要你有一个分配,你需要一个(自动)释放。这不会泄漏:NSString * s = @“一些字符串”; s = [...]; – 2009-08-10 18:32:44
明白了。谢谢。 – farhadf 2009-08-12 16:15:44