Я попытался найти другие проблемы, но не смог найти ничего подходящего, поэтому вот:
Я пытаюсь отобразить текст в виде таблицы, поэтому я использую этот фрагмент кода:
// StockData is an object I created and it pulls information from Yahoo APIs based on
// a stock ticker stored in NSString *heading
NSArray* tickerValues = [heading componentsSeparatedByString:@" "];
StockData *chosenStock = [[StockData alloc] initWithContents:[tickerValues objectAtIndex:0]];
[chosenStock getData];
// Set up the cell...
NSDictionary *tempDict = [chosenStock values];
NSArray *tempArr = [tempDict allValues];
cell.textLabel.text = [tempArr objectAtIndex:indexPath.row];
return cell;
Это все под cellForRowAtIndexPath
Когда я пытаюсь освободить выбранный объект Stock, я получаю эту ошибку: [Выпуск CFDictionary]: сообщение отправлено в освобожденный экземпляр 0x434d3d0
Я пытался использовать NSZombieEnabled и Build and Analyze для обнаружения проблем, но пока безуспешно. Я даже зашел так далеко, что прокомментировал фрагменты кода с помощью NSLog, но безуспешно. Ниже я опубликую код для StockData. Насколько я могу понять, что-то освобождается до того, как я сделаю выпуск, но я не уверен, как это сделать. Единственное место, где у меня есть релиз в моем коде, - это вызов метода Dealloc.
Вот код StockData:
// StockData contains all stock information pulled in through Yahoo! to be displayed
@implementation StockData
@synthesize ticker, values;
- (id) initWithContents: (NSString *)newName {
if(self = [super init]){
ticker = newName;
}
return self;
}
- (void) getData {
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:@"http://download.finance.yahoo.com/d/quotes.csv?s=%@&f=%@&e=.csv", ticker, @"chgvj1"]];
NSError *error;
NSURLResponse *response;
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSData *stockData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(stockData) {
NSString *tempStr = [[NSString alloc] initWithData:stockData encoding:NSASCIIStringEncoding];
NSArray *receivedValuesArr = [tempStr componentsSeparatedByString:@","];
[tempStr release];
values = [NSDictionary dictionaryWithObjects:receivedValuesArr forKeys:[@"change, high, low, volume, market" componentsSeparatedByString:@", "]];
} else {
NSLog(@"Connection failed: %@", error);
}
}
- (void)dealloc {
[ticker release];
[values release];
[super dealloc];
NSLog(@"Release took place fine");
}
@end