Je suis assez nouveau à l'objectif-c et essayer de créer une petite application pour l'iphone.
J'ai presque terminé cette petite erreur ici. En fait, j'ai cherché des heures avec google pour trouver une bonne solution, mais malheureusement, je ne suis pas en mesure de trouver une solution qui fonctionne.
J'utilise ce tutoriel ici pour construire une UITableView: UITableView Tutorial Le message d'erreur complet ressemble à ceci:objectif-c "méthode de mutation envoyée à l'objet immuable" erreur
* Mettre fin application en raison d'une exception non interceptée 'NSInternalInconsistencyException', raison: « * - [ NSCFArray insertObject: atIndex:]: méthode envoyé à muter objet immuable »
C'est le contrôleur de données en-tête: MyLinksDataController.h
@interface MyLinksDataController : NSObject {
NSMutableArray *tableList; //<---important part
}
- (unsigned)countOfList;
- (id)objectInListAtIndex:(unsigned)theIndex;
- (void)addData:(NSString *)data; //<---important part
- (void)removeDataAtIndex:(unsigned)theIndex;
@property (nonatomic, copy, readwrite) NSMutableArray *tableList; //<---important part
.....
et le contrôleur de données Méthode: MyLinksDataController.m
#import "MyLinksDataController.h"
@implementation MyLinksDataController
@synthesize tableList;
- (id)init {
if (self = [super init]) {
NSLog(@"Initilizing DataController");
//Instantiate list
NSMutableArray *localList = [[NSMutableArray alloc] init];
self.tableList = [localList copy];
[localList release];
//Add initial Data
[self addData:@"AAAAAAAAAAAAAA"];
[self addData:@"BBBBBBBBBBBBBB"];
}
return self;
}
----------------------------- --plus tard dans le code source ---------------------------------
- (void)addData:(NSString*)data; {
[tableList addObject:data]; //<---- here the app crashes
}
Je voudrais Appréciez à peu près toute aide.
Nous vous remercions de votre soutien à l'avance.
Daniel
Si une propriété de copie est vraiment appelé, puis substituer une propriété va conserver être une mauvaise solution. Comme il n'y a pas de mot clé mutablecopy, déclarez la propriété en tant que copie, mais écrivez votre propre accesseur au lieu d'utiliser des accesseurs synthétisés. –
Bon point. J'ajouterais que je ne vois presque jamais d'objets qui annoncent une propriété 'NSMutableArray'. Le puriste en moi voudrait voir un setter personnalisé qui stocke une copie mutable de l'objet et un getter personnalisé qui renvoie une copie immuable libeleased. –