У меня есть большая таблица, которая работает без ошибок, даже если мне кажется, что она слишком медленная по сравнению с более сложными ячейками, которые я открыл из загруженных примеров. Проблема возникает, когда я щелкаю ячейку, затем возвращаюсь, через несколько секунд быстрой прокрутки приложение вылетает на линии: charImage.image = [self imageForIndex:ch.charId];
Если я удаляю его, он падает на следующей строке: titleLabel.text = ch.title;
Кто-нибудь знаком с этим? Спасибо.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//NSLog(@"add a new cell at index path %@", indexPath);
// Each subview in the cell will be identified by a unique tag.
static NSUInteger const kTitleLabelTag = 2;
static NSUInteger const kCharImageTag = 3;
static NSString *kCellID = @"CellID";
// Configure the cell
// Declare references to the subviews which will display the char data.
UILabel *titleLabel = nil;
UIImageView *charImage = nil;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellID];
if (cell == nil) {
// No reusable cell was available, so we create a new cell and configure its subviews.
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellID] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
[cell setBackgroundColor:[UIColor clearColor]];
//
charImage = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"glyphs/a/1.png"]] autorelease];
charImage.tag = kCharImageTag;
charImage.autoresizingMask = UIViewAutoresizingNone;
[cell.contentView addSubview:charImage];
titleLabel = [[[UILabel alloc] initWithFrame:CGRectMake(60, 10, 215, 20)] autorelease];
titleLabel.tag = kTitleLabelTag;
titleLabel.font = [UIFont systemFontOfSize:16];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.adjustsFontSizeToFitWidth = YES;
[cell.contentView addSubview:titleLabel];
} else {
// A reusable cell was available, so we just need to get a reference to the subviews using their tags.
charImage = (UIImageView *)[cell.contentView viewWithTag:kCharImageTag];
titleLabel = (UILabel *)[cell.contentView viewWithTag:kTitleLabelTag];
}
// Get the specific info for this row.
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
Char *ch = (Char *)[charsList objectAtIndex:row+section*26];
// Set the relevant data for each subview in the cell.
// Set the image in the cell
charImage.image = [self imageForIndex:ch.charId];
[charImage sizeToFit];
int centerX = 30;
int centerY = 23;
CGSize size = charImage.frame.size;
charImage.frame = CGRectMake((int)(centerX - size.width / 2),
(int)(centerY - size.height / 2),
size.width, size.height);
titleLabel.text = ch.title;
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
InstantInsightAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
Char *ch = (Char *)[charsList objectAtIndex:row+26*section];
SqlQueries *db = [SqlQueries alloc];
NSArray *glyphsList = [db readGlyphsFromDatabaseAtId: ch.charId];
NSArray *charDescription = [db readMoreInfoFromDatabaseAtId: ch.charId];
Char *charDetails = [db readInstructionsAndQuotesFromDatabaseAtId: ch.charId];
[db release];
[ch release];
// Navigation logic -- create and push a new view controller
self.glyphsView = [[GlyphsViewController alloc] initWithStyle:UITableViewStyleGrouped];
self.glyphsView.glyphsList = glyphsList;
self.glyphsView.charDetails = charDetails;
self.glyphsView.charDescription = charDescription;
[delegate.navController pushViewController:self.glyphsView animated:YES];
[self.glyphsView release];
self.glyphsView = nil;
}
Вот подробная ошибка: она ничего не говорит, но я уверен, что видел что-то за исключением
[Сессия началась в 2009-10-05 07:41:25 +0300.]
GNU gdb 6.3.50-20050815 (версия Apple, gdb-967) (вторник, 14 июля, 02:11:58 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB - это бесплатное программное обеспечение, на которое распространяется стандартная общественная лицензия GNU, и вы
добро пожаловать изменить его и / или распространять его копии при определенных условиях.
Введите «показать копирование», чтобы увидеть условия.
На GDB нет абсолютно никаких гарантий. Тип "показать гарантию" для деталей.
Эта GDB была настроена как «i386-apple-darwin» .sharedlibrary apply-load-rules all
Присоединение к процессу 96464.
(GDB) ^ C
где
#0 0x95fd5688 in objc_msgSend ()
#1 0x00002f60 in -[IndexViewController tableView:cellForRowAtIndexPath:] (self=0xd19610, _cmd=0x319a6b9c, tableView=0x101be00, indexPath=0xd2e890) at /Users/Cristi/Documents/xcode - iPhone/Instant Insight/InstantInsight/Classes/IndexViewController.m:115
#2 0x30944bd0 in -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] ()
#3 0x3093e1fc in -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] ()
#4 0x309501f1 in -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow] ()
#5 0x30947715 in -[UITableView layoutSubviews] ()
#6 0x00b3dd94 in -[CALayer layoutSublayers] ()
#7 0x00b3db55 in CALayerLayoutIfNeeded ()
#8 0x00b3d3ae in CA::Context::commit_transaction ()
#9 0x00b3d022 in CA::Transaction::commit ()
#10 0x00b452e0 in CA::Transaction::observer_callback ()
#11 0x30245c32 in __CFRunLoopDoObservers ()
#12 0x3024503f in CFRunLoopRunSpecific ()
#13 0x30244628 in CFRunLoopRunInMode ()
#14 0x32044c31 in GSEventRunModal ()
#15 0x32044cf6 in GSEventRun ()
#16 0x309021ee in UIApplicationMain ()
#17 0x00002718 in main (argc=1, argv=0xbfffee50) at /Users/Cristi/Documents/xcode - iPhone/Instant Insight/InstantInsight/main.m:14