2013-08-20 4 views
0

Имеет ли эта линия утечка памяти? Пожалуйста, объясните, да или нет.Mutablecopy mem утечка?

Person.h 
------- 
NSMutableString *address; 


Person.m 
-------- 
@synthesize address; 

-(id) init 
{ 
    self = [super init]; 
    address = [[NSMutableString alloc] init]; 

    return self; 
} 

-(void) funcA() 
{ 
    [address appendFormat:@"located|at|%@", @"Singapore"]; 
    address = [[address stringByReplacingOccurrencesOfString:@"|" withString:@" "] mutableCopy]; 
} 

-(void) dealloc 
{ 
    [address release]; 
    [super release] 
} 

= address - это NSMutableString, и это также свойство. Я только выпускаю его по методу dealloc.

ответ

0

Вы проскальзывают здесь:

[address appendFormat:@"located|at|%@", @"Singapore"]; 
address = [[address stringByReplacingOccurrencesOfString:@"|" withString:@" "] mutableCopy]; 

Вы заменяете адрес с новым NSMutableString на второй линии.

Просто используйте replaceOccurrencesOfString:withString:options:range:, поэтому вам не нужно заменять строку.

[address appendFormat:@"located|at|%@", @"Singapore"]; 
[address replaceOccurrencesOfString:@"|" withString:@" " options:NSCaseInsensitiveSearch range:NSMakeRange(0, address.length -1)]; 
+0

Благодарим за быстрый ответ. Я думаю, что мой пост был неполным. Пожалуйста, взгляните еще раз. Я не использую ARC. – iOSDevNewbie

+0

Да, у вас код протекает. – rckoenes

+0

Спасибо, что заглянули в него снова. Но это не работает. «|» после второй строки не заменяются символом «». Есть предположения? – iOSDevNewbie

Смежные вопросы