我在一个类的头文件中定义了一个枚举:
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;
}
}
我的代码编译正确,没有警告。 使用 RED 调用 switchTest 方法时,输出为: “红色选择”
但是一旦开关的第一行运行,应用程序就会意外退出并且没有警告/错误。
我不介意使用 if/else 语法,但我想了解我的错误。
最佳答案
对我来说很好:
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;
}
关于使用枚举的 iPhone switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2960241/