Je suis assez nouveau pour le développement Objective C et iPhone ont frappé un problème qui m'a complètement déconcertéNSMutableArray d'objets de retour type UICGColor pendant cellForRowAtIndexPath événement
J'ai une classe, la vente, qui a la méthode de classe suivante :
+(NSMutableArray*)liveSales {
NSMutableArray *liveSales = [[NSMutableArray alloc] init];
for(int i = 0; i <= 100; i++)
{
Sale *s = [[Sale alloc] init];
//[s setTitle:[NSString stringWithFormat:@"Sale %d", i+1]];
[s setTitle:@"Title"];
//[s setDescription:[NSString stringWithFormat:@"Sale %d descriptive text", i+1]];
[s setDescription:@"Description"];
[liveSales addObject:s];
[s release];
s = nil;
}
return [liveSales autorelease];
}
Je puis en utilisant cette méthode de classe de la façon suivante:
#import "RootViewController.h"
@implementation RootViewController
@synthesize liveSales = _liveSales;
- (void)viewDidLoad {
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
[[self navigationItem] setTitle:@"Sales"];
if (![self liveSales])
{
[self setLiveSales:[Sale liveSales]];
}
}
Je puis personnalise mes cellules de la table l'événement suivant:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
Sale *sale = [[self liveSales] objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[sale title]];
[[cell detailTextLabel] setText:[sale description]];
[sale release];
sale = nil;
return cell;
}
Si je lance alors ce code à l'aide du simulateur je peux voir que chaque cellule de tableau indique les informations correctes et tout apparaît fonctionner correctement , qui est jusqu'à ce que je défiler au bas de la liste et l'application meurt avec les informations suivantes enregistrées dans la fenêtre de la console:
2010-02-10 20:23:50.741 AppName[1828:207] *** -[UICGColor title]: unrecognized selector sent to instance 0x3b05750
2010-02-10 20:23:50.743 AppName[1828:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UICGColor title]: unrecognized selector sent to instance 0x3b05750'
2010-02-10 20:23:50.744 AppName[1828:207] Stack: (
29291611,
2510427401,
29673531,
29242998,
29095618,
8789,
3047008,
3013271,
3089642,
3053907,
55804592,
55804015,
55802054,
55801146,
55834680,
29078098,
29075039,
29072456,
37382029,
37382226,
2764803
)
J'ai passé quelques bonnes heures à essayer de comprendre ce qui se passe ici en vain, mais je suis sûr que je ' m manquant quelque chose de vraiment évident, ou approchant la logique de l'application de la mauvaise façon
Toute aide quiconque pourrait fournir serait grandement appréciée :)
Merci
Dave
Merci Ahmet, ça a résolu le problème :) Je savais que ce serait quelque chose d'évident !! – Dave
:) Il faut un certain temps pour s'habituer à conserver/relâcher correctement –