Неверный код на Apple пример кода?

Я просмотрел пример проекта Apple «PageControl» ( См. здесь ) и вижу эту функцию в коде:

- (void)loadScrollViewWithPage:(int)page
{
    if (page < 0)
        return;
    if (page >= kNumberOfPages)
        return;

    // replace the placeholder if necessary
    MyViewController *controller = [viewControllers objectAtIndex:page];
    if ((NSNull *)controller == [NSNull null])
    {
        controller = [[MyViewController alloc] initWithPageNumber:page];
        [viewControllers replaceObjectAtIndex:page withObject:controller];
        [controller release];
    }

    // add the controller's view to the scroll view
    if (controller.view.superview == nil)
    {
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        controller.view.frame = frame;
        [scrollView addSubview:controller.view];

        NSDictionary *numberItem = [self.contentList objectAtIndex:page];
        controller.numberImage.image = [UIImage imageNamed:[numberItem valueForKey:ImageKey]];
        controller.numberTitle.text = [numberItem valueForKey:NameKey];
    }
}

Есть кое-что, чего я не делаю » Не понимаю.
Если тестовая часть if ((NSNull *) controller == [NSNull null]) истинна, то у нас есть

controller = [[MyViewController alloc] initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];

Затем сразу после:

if (controller.view.superview == nil)

Но контроллер только что был выпущен. Я думаю, это может сработать, потому что контроллер все еще находится в памяти, но разве это не неправильный способ кодирования материала?

5
задан JasonMArcher 8 November 2014 в 02:37
поделиться