NSArray staje się NSCFArray po przejściu

Mam metodę, która odbiera wiele różnych rodzajów obiektów i decyduje, co z nimi zrobić:

-(void)performAction:(NSObject *)myAction withItem:(Item *)myItem {

actionCount = -1;
NSLog(@"-- NEW ACTION ARRAY --");
if ([myAction isMemberOfClass:[Look class]]) {
    currentActionArray = [self createLookArray:(Look *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Use class]]) {
    currentActionArray = [self createUseArray:(Use *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Exit class]]) {
    currentActionArray = [self createExitArray:(Exit *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[NSArray class]] ) {
    NSLog(@"--- CUSTOM ACTION --- %@", myAction);
    currentActionArray = (NSArray *)myAction;
} 
[self performNextAction];

}

Oto jedna z czterech rzeczy: Look, Use, Exit lub NSArray. Pierwsze trzy są wysyłane, aby stać się NSArrays, ostatni jest już NSArray.

Teraz, kiedy przekazuję tutaj NSArray z innego miejsca, jak poniżej:

    NSArray *myAction = [[NSArray alloc] initWithObjects:myAction1, myAction2, nil];
[controller performAction:myAction withItem:nil];

... akcja niestandardowa nigdy nie jest wywoływana, ponieważ odczytuje myAction jako NSCFArray, a nie NSArray. Kiedy próbuję [myAction isMemberOfClass: [klasa NSCFArray]] nie rozpoznaje CF. Prostym sposobem na to, aby w tej chwili zadziałało, jest założenie, że cokolwiek nie jest wyglądem, używaniem lub wyjściem, jest NSArray (pozbądź się ostatniego, jeśli i po prostu zostaw to jako coś innego), ale wydaje mi się to niedbałe .

Czy ktoś wie, jak sobie z tym poradzić?

Dzięki, -k.

questionAnswers(3)

yourAnswerToTheQuestion