Iphone PageViewController:如何释放添加到其中的ViewController?

Iphone PageViewController:如何释放添加到其中的ViewController?,iphone,objective-c,cocoa-touch,uiviewcontroller,ios5,Iphone,Objective C,Cocoa Touch,Uiviewcontroller,Ios5,我对新的PageViewController(具有漂亮的翻页动画的那个)有问题。据我所知,有一组ViewController,您需要这样设置: PageView *startingViewController = [self.modelController viewControllerAtIndex:0]; NSArray *viewControllers = [NSArray arrayWithObject:startingViewController]; [self.pageViewCont

我对新的PageViewController(具有漂亮的翻页动画的那个)有问题。据我所知,有一组ViewController,您需要这样设置:

PageView *startingViewController = [self.modelController viewControllerAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
到目前为止还不错。然后需要设置一个源(模型控制器)。在模型控制器中,需要有四种方法:

-(PageView *)viewControllerAtIndex:(NSUInteger)index
-(NSUInteger)indexOfViewController:(PageView *)viewController
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
如果翻到下一页或上一页,则调用最后两页。第二个简单地确定页面索引号。有趣的一个——也是我的问题所在——是第一个。第一个返回一个ViewController(在我的示例中称为PageView)。这是该方法的最后一步:

PageView *pView = [[PageView alloc] init];
return pView;
我想知道这个pView在哪里结束,我如何才能发布它?我想自动释放是个坏主意,因为我不知道需要多长时间。如果它在堆栈中结束(我想是的),需要多长时间?当然,就在接下来的几页。例如,想象一下为第1页设置一个pView。然后翻到第2页和第3页。到那时,你就不再需要第1页了——你可以发布它了。如果您返回到第1页,它将被重新加载

我把log命令放在pView dealloc中,但从未调用它。所以我想我正在泄露我创建的每一个ViewController


一旦不再需要它们,您知道如何以及在何处释放它们吗?

自动释放
正是您所需要的。这是
autorelease
设计的理想情况,即您需要返回一个对象,但不知道需要多长时间

PageView *pView = [[PageView alloc] init] autorelease];
return pView;
您的PageView实例是在堆(而不是堆栈)上分配的,如果需要保留它,PageViewController将获得它的所有权并保留它。方法返回后,它将成为PageViewController的责任


(否则,只需使用ARC并让编译器处理即可)

现在可以很好地工作了。我只是非常困惑,因为苹果公司在其PageBasedApplication的故事板前版本中没有使用autorelease。在xCode 4.2中,他们放弃了我正在使用的示例,用情节提要模板替换了它。但我现在还不能为故事板而烦恼。。。所以非常感谢!ARC没有处理它。不释放未使用的ViewController