0
我的代碼存在問題,對於我來說我無法弄清楚,甚至沒有以前的所有線程。 我從JSON源拉取數據並將其放入NSDictionary中,如教程和SO中所述。在分析應用程序時,我注意到由此NSDictionary引起的內存泄漏,但在此函數結束時釋放它會使應用程序崩潰。有什麼建議麼? (順便說一句:我是新來的,一般的OBJ-C和編程,所以這段代碼主要是從各種來源cherrypicked。)NSDictionary泄漏內存
- (void)fetchedData:(NSData *)responseData {
//parse JSON for empty return
if([responseData length] != 0){
NSError* error = nil;
//Convert JSON data to Obj-C
NSDictionary* allShotData = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSString *player = [[allShotData objectForKey:@"player"] objectForKey:@"name"];
NSString *shotDribbblePage = [allShotData objectForKey:@"url"];
NSString *shotTitle = [allShotData objectForKey:@"title"];
NSURL *imageURL = [NSURL URLWithString:[allShotData objectForKey:@"image_url"]];
shotPageURL = [shotDribbblePage retain];
//***********************
// Setup a-sync loading of shot
//***********************
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadImage:) object:imageURL];
[queue addOperation:operation];
[operation release];
[queue release];
}
else{
airballCount++;
if (airballCount <= 20) {
[self getDribbbleData];
}
else{
NSLog(@"Too many airballs. Bailing out");
[self showNoConnectionModal];
}
}
}
或'[shotPageURL發佈]; shotPageURL = nil; shotPageURL = [shotDribbblePage retain];'如果沒有屬性。 – beryllium 2012-02-06 09:27:46
@beryllium指出 - 謝謝。 – justin 2012-02-06 09:34:02
謝謝賈斯汀,這確實是問題之一,但事實證明這不是唯一的問題。一個人提到複製shotDribbblePage添加副本,然後手動釋放它。這顯然是因爲紅色的秒殺不再出現。 – 2012-02-06 09:52:06