У меня странная проблема с логической логикой. Я должен делать что-то глупое, но я не могу понять это.
В приведенном ниже коде firstMeasure.isInvisibleArea имеет значение true, а measureBuffer1 равен nil.
Несмотря на то, что test1 по какой-то причине оценивается как NO, он все равно добавляется в мое выражение if.
Это работает нормально, если я использую закомментированную строку.
Есть идеи, почему это происходит?
BOOL firstVisible = firstMeasure.isInVisibleArea;
BOOL notFirstVisible = !(firstMeasure.isInVisibleArea);
BOOL measureBufferNil = measureBuffer1 == nil;
BOOL test1 = measureBuffer1 == nil && !firstMeasure.isInVisibleArea;
BOOL test2 = measureBufferNil && !firstVisible;
if (measureBuffer1 == nil && !firstMeasure.isInVisibleArea)
//if (measureBufferNil && !firstVisible)
{
//do some action
}
Обновление 1:
Я выделил проблему для! FirstMeasure.isInVisibleArea, так как я полностью взял бит measureBuffer.
Внутри области isInVisible есть небольшой расчет (хотя он ничего не меняет), но он использует self.view.frame. Я собираюсь вычеркнуть это из уравнения и посмотреть, что произойдет. Я догадываюсь, что self.view.frame меняется между двумя вызовами isInVisibleArea.
Обновление 2:
Это действительно проблема. Я добавил ответ более подробно ниже