iOS7与常量和表达式的比较总是假的

时间:2013-08-05 11:02:20

标签: ios objective-c comparison nsinputstream

在我的适用于iOS 5和6的应用中,我有if声明:

NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:sourcePath];
if ([inputStream streamStatus] == NSStreamEventErrorOccurred){
[...]
}

在iOS 7上,我收到以下警告:

 Comparison of constant 'NSStreamEventErrorOccurred' with expression of type 
'NSStreamStatus' (aka 'enum NSStreamStatus') is always false

关于iOS 7关于NSInputstream课程的变化的任何想法?我想知道为什么我现在在iOS7上收到此警告。

1 个答案:

答案 0 :(得分:17)

iOS 7更适用于枚举比较。问题是您将NSStreamStatus枚举值与另一个不相关的NSInputStreamEvent值进行比较。相反,尝试:

NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:sourcePath];
if ([inputStream streamStatus] == NSStreamStatusError){
    [...]
}

此问题与iOS 7本身无关,这只是您现在发现的一个问题,这要归功于更细致的警告。