2011-10-19 82 views
0

我有一個應用程序,切換圖像,但我遇到了很多麻煩...... 第一個「del」是de AppDelegate,並且「displayImage」在其中定義.m 「equiz」是一個整數,但所有圖像被命名爲「1」,「2」,這樣的爲什麼我的圖像泄漏或是殭屍?

因此,當我使用此代碼,我得到的泄漏,但沒有崩潰:

UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%d",equiz]]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    imgView.frame = del.displayImage.frame; 
    del.displayImage = imgView; 
    [imgView release]; 

然後我用這個,但我得到一個崩潰,當我去到設備的「桌面」,然後返回到應用程序:

UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%d",equiz]]; 
    del.displayImage.image = img; 
    [img release] //"that line" 

然後你說:「你是釋放,你不擁有該對象」 和我說:「如果我刪除‘該行’我會得到相同的泄漏d:

有人可以幫助我這個問題? 非常感謝您提前:D

+0

你確定'displayImage'正在釋放和正確釋放嗎?不管泄漏,不要發佈'img'。 – Kevin

+0

謝謝...確定已刪除的版本,它泄漏反正:S 如果我刪除那些'del.displayImage = something'錯誤不會ocurr,它是關於使用我的AppDelegate類來存儲應該在我的ViewController上的圖像的問題? – CalixJumi

回答

0

嗨我有類似的問題,它來自NSString。所以我的解決辦法是這樣的:在 .h文件中創建

NSString *imageName; 
@property(nonatomic, retain)NSString *imageName; 

然後在.m文件做到這一點

@synthesize imageName; ...

imageName = [NSString stringWithFormat:@"%d",equiz]; 
UIImage *img = [UIImage imageNamed:imageName]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    imgView.frame = del.displayImage.frame; 
    del.displayImage = imgView; 
    [imgView release]; 

...

和dealloc方法釋放imageName ...

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

通過我這個工作。希望幫助您解決了。