iOS 自动释放手动释放混编

当项目为手动释放时,Build Settings中,Objective-c Automatic Reference Conting 为YES 时,想要手动管理一些文件,在CompileSources中选中你之前的没有用过ARC的文件,双击,添加-fno-objc-arc,就ok了。

当项目为自动释放时,Build Settings中,Objective-c Automatic Reference Conting 为No时,想要自动管理一些文件,在CompileSources中选中你之前的没有用过MRC的文件,双击,添加-fobjc-arc,就ok了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS 中的视图控制器是非常重要的组件,它们负责管理应用程序的界面,并且需要及时释放以避免内存泄漏。下面以一个简单的例子来说明视图控制器的释放。 假设我们有一个包含两个视图控制器的应用程序,分别是 AViewController 和 BViewController。AViewController 是主界面,BViewController 是从 AViewController 跳转过来的界面。 在 AViewController 中,我们使用如下代码跳转到 BViewController: ``` BViewController *bvc = [[BViewController alloc] initWithNibName:@"BViewController" bundle:nil]; [self.navigationController pushViewController:bvc animated:YES]; ``` 在 BViewController 中,我们可以通过点击返回按钮来返回到 AViewController。这个过程中,AViewController 会被重新显示出来,但是 BViewController 已经不需要了,需要将其释放。 如果我们使用 ARC,那么只需要在 BViewController 中添加如下代码即可: ``` - (void)dealloc { NSLog(@"BViewController dealloc"); } ``` 当 BViewController 被释放时,会自动调用 dealloc 方法,我们可以在这里添加一些清理工作,例如取消网络请求、移除通知等。 如果我们使用手动内存管理(MRC),那么需要在 AViewController 中添加如下代码: ``` - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if (![self.navigationController.viewControllers containsObject:self]) { // BViewController 被弹出了,需要释放 [self release]; } } ``` 当 BViewController 被弹出时,会触发 AViewController 的 viewWillDisappear 方法,在这里判断当前视图控制器是否还在导航栈中,如果不在就可以释放了。注意,这里需要调用 release 方法来手动释放内存。 总之,无论是使用 ARC 还是手动内存管理,都需要及时释放不再需要的视图控制器,以避免内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值