ARC写的代码 外部非ARC环境调用时到底是否需要release

本文探讨了在使用非ARC(MRC)项目中调用ARC编译的库时遇到的内存管理问题。具体讨论了不当使用release导致的程序崩溃,并给出了正确的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:下面的说法貌似仍然有问题,问题出在我  [NCMemoryControllershareMemoryControllerWithOpen:YESwithClientId:APPID]; 这句话上,因为不是alloc申请的,所以不能release

(2014,11,18)





今天遇到个问题  找了挺长时间没找到问题

是这样的,同事写了个控制器类 NCMemoryController 打成了.a文件供外部调用 

NCMemoryController 这个类同事当时应该是用ARC写的,而我的项目因为是老项目的缘故暂时用的还是非ARC(即MRC) 

我像下边这种写法 程序居然会崩溃  一直没搞明白  后来QQ群里有个朋友说了才知道  后边的release是不可以有的     

把 release去掉就可以了

NCMemoryController *memoryController = [NCMemoryControllershareMemoryControllerWithOpen:YESwithClientId:APPID];

    memoryController.hidesBottomBarWhenPushed =YES;

    [self.navigationControllerpushViewController:memoryControlleranimated:YES];

   //  [memoryControllerrelease];



另把朋友的原话放这吧:

你不需要release。。。
南京-Zippo-2Y  22:57:34
不管在哪里。。。取决于你的调用的类是用mrc写还是arc写的


你说A push到B
南京-Zippo-2Y  22:57:58
然后刚push过去
南京-Zippo-2Y  22:58:05
你就把它释放了。你觉得合适吗。。。
南京-Zippo-2Y  22:58:18
人家是arc。。。你非要给它释放一次。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值