To be clear, when you are using literals then you are not adding objects to an array, you are initializing an array. You could do:
NSArray *array = @[
(self.myView01 ? self.myView01 : [NSNull null]),
(self.myView1 ? self.myView1 : [NSNull null]),
(self.myView2 ? self.myView2 : [NSNull null]),
];
for (UIView *view_ in array) {
if (view_ != [NSNull null]) {
// DO SOMETHING
}
}
But then in your loop you'd have to compare each object you are iterating over to [NSNull null]. Alternatively, you could not use a literal and build a NSMutableArray.
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:3];
if (self.myView01) {
[array addObject:self.myView01];
}
if (self.myView1) {
[array addObject:self.myView1];
}
if (self.myView2) {
[array addObject:self.myView2];
}
for (UIView *view_ in array) {
// DO SOMETHING
}
It really depends on what you think is more readable.
NSNullan option for you?