objective-c - 在 Block 中释放 View Controller 的位置

标签 objective-c ios memory-management objective-c-blocks

嗨,我使用 block 来实现将 View Controller 推送到堆栈上。我的代码如下:

我的问题是,对于内存管理,我可以在哪里释放 firstView 实例?我试图在完成 block 本身中释放它,但如果我按从 splashView 到 firstView 的后退按钮,我会遇到“内存问题”

FirstViewController *firstView = [[FirstViewController alloc]init];

[firstView setCompletionHandler:^(BOOL isRequestInvite){

    splashView=[[AuthSplashController alloc] init];
    [splashView setCompletionHandler:onceCompleted];

    [navCon pushViewController:splashView animated:YES];
    //[firstView release];

}];

[navCon pushViewController:firstView animated:NO];

那么在这种情况下,哪里是发布 firstView 的最佳位置呢?

最佳答案

我想你可以release firstView将其推送到导航堆栈后,因为保留计数会增加:

 [navCon pushViewController:firstView animated:NO];
 [firstView release];

或者您可以将该对象标记为 autoreleased :
 FirstViewController *firstView = [[[FirstViewController alloc]init] autorelease];

关于objective-c - 在 Block 中释放 View Controller 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832270/

相关文章:

Objective-c 异步内存管理

objective-c - 如何在 Mac 上与 layer-backed views 交互

ios - 如何在使用 AVPlayer 播放视频之前检测 AirPlay 是否处于事件状态?

ios - 如何在String Swift中获得第一个元音

java - 如何计算Java程序的内存使用情况?

ios - UIScrollView:仅在允许时滚动

ios - 在 iOS 中以编程方式将录制的视频旋转 90 度

javascript - 如何从 Javascript 调用 Objective-C 方法并将数据发送回 iOS 中的 Javascript?

c - 如何在 C 中为 int(不是 int*)数组动态分配内存?

Python - 读取和删除文件的顶行而不将其加载到内存中