BOOL является примитивным типом, и вашему массиву требуется объект. Вот почему вам нужно обернуть это в NSNumber. Но с более новым xcode вы можете просто набрать @YES или @NO, и xcode будет обрабатывать его как число с кодом.
Итак, вместо:
BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:[NSNumber numberWithBool:booleanValue]];
теперь вы можете использовать
[arrayZone replaceObjectAtIndex:indexZone withObject:@YES];