我最近在编译iOS应用程序时从LLVM GCC 4.2切换到LLVM 3.0编译器。除了我的一些switch语句之外,一切看起来都是一样的。在切换条件下直接使用Obj-C方法时,看起来有些不对劲。
我在下面创建了main.m文件来重现这个。正在打印property: 846
,但应清楚地打印property: 2
。我使用switch有什么问题,或者这可能是编译器中的错误吗?
#import <Foundation/Foundation.h>
@interface STSomeClass : NSObject
@end
@implementation STSomeClass
- (int)mytype{
return 2;
}
- (int)someProperty{
switch ([self mytype]) {
case 1:
case 2:
case 3:
case 6:
case 8:
case 9:
return 2;
case 4:
case 7:
return 1;
default:
return 0;
}
}
- (void)printSomeProperty{
printf("property: %d\n", [self someProperty]);
}
@end
int main(int argc, char *argv[])
{
STSomeClass* someObject;
someObject = [[STSomeClass alloc] init];
[someObject printSomeProperty];
[someObject release];
}
更新:
要清楚我是如何编译代码的:
答案 0 :(得分:2)
我尝试了两种方式的代码:Xcode 4.4,llvm 4.0,ARC和Xcode 4.3,llvm 3,1 no-ARC,包括OS X 10.7.3,iOS 4.3目标和iOS 5.0。模拟器和得到的属性:2&#34;两次。
所以,你的案子还有其他事情发生。您使用的是哪种确切配置?