У меня есть метод, который выглядит следующим образом:
- (void)testMethod:(int)myNumber {
switch (myNumber) {
case 0: {
MyViewController0 *controller = [self.myViewControllers objectAtIndex:myNumber];
if ((NSNull *)controller == [NSNull null]) {
controller = [[MyViewController0 alloc] initWithNibName:@"MyView0" bundle:nil];
controller.aVariable = self.myVariable;
[self.myViewControllers replaceObjectAtIndex:myNumber withObject:controller];
[controller release];
}
if (controller.view.superview == nil) {
// do some stuff with controller ...
}
break;
}
case 1: {
MyViewController1 *controller = [self.myViewControllers objectAtIndex:myNumber];
if ((NSNull *)controller == [NSNull null]) {
controller = [[MyViewController1 alloc] initWithNibName:@"MyView1" bundle:nil];
[self.myViewControllers replaceObjectAtIndex:myNumber withObject:controller];
[controller release];
}
if (controller.view.superview == nil) {
// do some stuff with controller ...
}
break;
}
// ...
}
}
Моя проблема связана с этими строками, которые всегда одинаковы:
if (controller.view.superview == nil) {
// do some stuff with controller ...
}
Итак, я хочу удалить эти строкивнутри распределительного шкафа и поместите их в конец метода.
Проблема в том, что если я это сделаю, я получу ошибку: Use of undeclared identifier controller
.Я думаю, это потому, что вполне возможно, что controller
может остаться необъявленным (если ни один случай не будет успешным).
Но что я могу сделать, чтобы избежать вставки этих строк в каждое утверждение case, могу ли я вместо этого поставитьодин раз в конце метода?