获取UIImageView时如何避免此内存泄漏?

时间:2010-12-16 16:30:00

标签: iphone objective-c ipad

我有一个帮助方法为我加载图像。我希望能够在我的应用程序中使用此代码,所以我创建了这个:

+(UIImageView *) getSignature: (NSString *) aPONumber {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *newPath =[documentsPath stringByAppendingPathComponent: [NSString stringWithFormat:@"%@-signature.jpg", [aPONumber stringByReplacingOccurrencesOfString:@"/" withString:@""]]];

    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:newPath];
    if(fileExists)
    {

        return [[UIImageView alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:newPath]];
    } else {
        return nil;
    }   
}

这是一个使用自动释放的好地方吗?像这样:

return [[[UIImageView alloc] initWithImage:[[[UIImage alloc] initWithContentsOfFile:newPath] autorelease]]autorelease];

1 个答案:

答案 0 :(得分:1)

简短回答:是的。

你可以在那里使用自动释放,而不必担心再发布你的UIImageViews或UIImages。只需将它们添加到UIView中,一旦它们从UIView中删除或UIView被取消分配,它们将自动解除分配。