Невозможно добавить объект в NSMutableArray - PullRequest
2 голосов
/ 10 мая 2011

Эй, ребята, у меня есть этот код внутри функции внутри класса, который является подклассом NSOperation:

//...
@implementation DataLoader

@synthesize addedAnnotations;
@synthesize addedOverlays;
@synthesize loaderFunc;
@synthesize DLDelegate;    
//...
-(id)initWithFunction:(LoaderFunc)func withDelegate:(id)delegate {
    if (self = [super init]) {
        self.addedOverlays = nil;
        self.addedAnnotations = nil;
        self.loaderFunc = func;
        self.DLDelegate = delegate;
        return self;
    }
    return nil;
}
//...
//inside a function
    for (ParkingAnnotations *annotation in fetchedObjects) {
        ParkingAnnotation *parkingAnnot = [[ParkingAnnotation alloc] init];
        workingCoordinate.latitude = [[annotation latitude] doubleValue];
        workingCoordinate.longitude = [[annotation longitude] doubleValue];
        [parkingAnnot setCoordinate:workingCoordinate];
        [parkingAnnot setTitle:[annotation valueForKey:@"lotName"]];
        [parkingAnnot setAnnotationType:[annotation iconTypeRaw]];

        [self.addedAnnotations addObject:parkingAnnot];//parkingAnnot not added to array here
        [parkingAnnot release];
    }
//...

Добавленные аннотации - это массив NSMutable, я просматривал этот код с помощью отладчика ипо какой-то причине объект parkingAnnot не добавляется в массив.Вот соответствующий код заголовка для класса:

//...    
@interface DataLoader : NSOperation {
        NSMutableArray *addedAnnotations;
    NSMutableArray *addedOverlays;
    LoaderFunc loaderfunc;
    id <DataLoaderProtocol> DLDelegate;
}

@property (nonatomic, retain) NSMutableArray* addedAnnotations;
@property (nonatomic, retain) NSMutableArray* addedOverlays;
@property (nonatomic) LoaderFunc loaderFunc;
@property (assign) id DLDelegate;
//...

Это удивительная проблема, потому что функция, в которой я испытываю проблему, была скопирована из моего MapViewController и по сути такая же, но вместо mapView addAnnotation: Я добавляю в NSMutable массив вместо этого.Есть идеи, что случилось?Заранее спасибо!

1 Ответ

4 голосов
/ 10 мая 2011

Где вы на самом деле создаете экземпляр массива AddedAnnotations?Я вижу только то, что ему присваивается ноль в вашей функции инициализации, возможно, оно должно измениться на что-то вроде:

self.addedAnnotations = [[[NSMutableArray alloc] init] autorelease];
...