Soy bastante nuevo en Objective-C y trato de crear una pequeña aplicación para el iphone.
Casi he terminado al lado de este pequeño error aquí. De hecho, he buscado horas en Google para encontrar una solución adecuada, pero desafortunadamente no puedo encontrar una solución que funcione.
estoy usando este tutorial aquí para construir una UITableView: UITableView Tutorial El mensaje de error completo es el siguiente:objetivo-c "Método de mutación enviado al objeto inmutable" error
* Terminación de aplicación debido a excepción no detectada 'NSInternalInconsistencyException', razón: '* - [ NSCFArray InsertObject: atIndex:]: método mutando enviado al objeto inmutable'
Este es el encabezado del tratamiento de datos: 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
.....
y el método del tratamiento de datos: 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;
}
----------------------------- --más adelante en el código fuente ---------------------------------
- (void)addData:(NSString*)data; {
[tableList addObject:data]; //<---- here the app crashes
}
apreciamos mucho cualquier ayuda.
Gracias por su ayuda con anticipación.
Daniel
Si una propiedad copia es realmente necesario, a continuación, sustituyendo un retienen la propiedad va a ser una mala solución. Como no hay una palabra clave mutablecopy, declare la propiedad como copia, pero escriba su propio acceso en lugar de usar accesores sintetizados. –
Buen punto. También agregaría que casi nunca veo objetos que publiciten una propiedad 'NSMutableArray'. El purista en mí desearía ver un setter personalizado que almacene una copia mutable del objeto y un getter personalizado que devuelva una copia inmutable que se haya lanzado automáticamente. –