2
我是iOS開發新手。我在運行後臺線程時遇到問題。在我的代碼中,resetUi正在主UI線程上運行,現在我開始後臺線程來獲取圖像數據並更新我的圖像。一切工作正常,但當調用執行SelectorInBackground時內存泄漏。使用performSelectorInBackground時發生內存泄漏
請讓我知道我做錯了。另外請建議如果在從URL(dataWithContentsOfURL)中獲取時更新我的圖像是否有更好的方法。
[更新]
儀器正在顯示2個獨立的泄漏一個在perfromSelectorInBackground和其他在UIImage的imageWithData。我想有些事情正在發生可怕的錯誤與imageUpdate的(imageWithData)
-(void)updateData{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
profileName.text = oAuthTwitter.screen_name;
if(profilePic.image == nil){
NSString *urlString = @"https://api.twitter.com/1/users/profile_image/";
urlString = [urlString stringByAppendingFormat:oAuthTwitter.screen_name];
urlString = [urlString stringByAppendingFormat:@"?size=bigger"];
profilePic.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]];
[activityIndicator stopAnimating];
[activityIndicator release];
}
[pool drain];
}
- (void)resetUi{
if (oAuthTwitter.oauth_token_authorized) {
profilePic.hidden = NO;
profileName.hidden = NO;
NSLog(@"Resetting to authorised state");
[self performSelectorInBackground:@selector(updateData) withObject:nil];
}else{
NSLog(@"Resetting Twitter UI to non-authorized state.");
profilePic.hidden = YES;
profileName.hidden = YES;
}
}
我試着改變它,但沒有運氣。 – vijaykumarg
是的,我正在使用泄漏儀器運行代碼。請澄清我是否有任何其他替代方法從URL中獲取圖像。我想這是造成所有的麻煩。 – vijaykumarg
您是否更改了我在答案中提到的activityIndicator?另外關於從URL獲取圖像,你的邏輯看起來不錯,我不認爲這是你的問題的原因 – Krishnabhadra