В принципе:
Вы не вызываете метод с именем, содержащим «copy», «alloc», «new» или «get» ( CANG ) - поэтому вы не должны release test
, потому что вы не владеете этим.
На практике:
Убедитесь, что +[DataGetter read]
возвращает объект autorelease
d.
Пример:
+(NSString *)read
{
NSString *result = [NSString stringWithFormat:@"Homedir: %@", [@"~" stringByExpandingTildeInPath]];
return result; // Correct: You don't own "result", so you can return it as is
}
// Alternate implementation 1:
+(NSString *)read
{
NSString *result = [[NSString alloc] initWithFormat:@"Homedir: %@", [@"~" stringByExpandingTildeInPath]];
return result; // Wrong: You own "result" since you created it!
}
// Alternate implementation 2:
+(NSString *)read
{
NSString *result = [[NSString alloc] initWithFormat:@"Homedir: %@", [@"~" stringByExpandingTildeInPath]];
return [result autorelease]; // Correct: calling autorelease ensures that result is going to be released later on.
}