оператор переключения iPhone с помощью перечисления

Я определил перечисление в заголовочном файле класса:

typedef enum{
 RED = 0,
 BLUE,
 Green
} Colors;

- (void) switchTest:(Colors)testColor;

и в файле реализации я имею:

- (void) switchTest:(Colors)testColor{

   if(testColor == RED){
    NSLog(@"Red selected");    
   }

   switch(testColor){
    case RED:
    NSLog(@"Red selected again !");
    break;
    default:
    NSLog(@"default selected");
    break;
   }

}

Мой код компилирует правильно без предупреждений. При вызове switchTest метода с КРАСНЫМ вывод: "Красный выбран"

но однажды первая строка выполнений переключателя, приложение неожиданно выходит и без warrnings/errors.

Я не возражаю использовать, если/еще синтаксис, но я хотел бы понять свою ошибку.

5
задан shortstacker 2 June 2010 в 18:01
поделиться

1 ответ

У меня работает:

typedef enum{
    RED = 0,
    BLUE,
    Green
} Colors;

@interface Test : NSObject

- (void) switchTest:(Colors)testColor;
@end

@implementation Test

- (void) switchTest:(Colors)testColor {
    if(testColor == RED) {
    NSLog(@"Red selected");    
    }

    switch(testColor){
    case RED:
        NSLog(@"Red selected again !");
        break;
    default:
        NSLog(@"default selected");
        break;
    }
}
@end


int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    Test *myTest = [[Test alloc] init];

    [myTest switchTest:RED];

    [myTest switchTest:RED];

    [pool drain];
return 0;
}

13
ответ дан 18 December 2019 в 07:28
поделиться