永远不会读取在初始化期间存储到'image'的值

Kev*_*inC 2 memory-leaks memory-management

当在xcode 4.2中运行analyze时,我发出警告"在初始化期间存储到'image'的值永远不会被读取." 任何人都可以帮我解决代码有什么问题?

UIImage *image=[[[UIImage alloc] init]autorelease];
if (carousel==recipeCarousel) {
    image = [recipeItems objectAtIndex:index];
} else {
    image = [packItems objectAtIndex:index];
}    
UIView *view = [[[UIImageView alloc] initWithImage:image] autorelease];
return view;
Run Code Online (Sandbox Code Playgroud)

谢谢.

min*_*han 5

您已使用此代码分配UIImage

UIImage *image=[[[UIImage alloc] init]autorelease];
Run Code Online (Sandbox Code Playgroud)

但后来你在recipeItems或中分配对象packItems

这样你就会失去对分配对象的控制权.

所以你可以这样做

UIImage *image = nil;

if (carousel==recipeCarousel) {
    image = [recipeItems objectAtIndex:index];
} else {
    image = [packItems objectAtIndex:index];
}    
Run Code Online (Sandbox Code Playgroud)

要么

NSArray *targetItems = nil;

if (carousel==recipeCarousel) {
    targetItems = recipeItems;
} else {
    targetItems = packItems;
}    

UIImage *image = [targetItems objectAtIndex:index];
Run Code Online (Sandbox Code Playgroud)