iOS try-catch memory leak详解

本文详细探讨了iOS中使用try-catch时可能导致内存泄漏的问题,并提供了避免内存泄漏的方法。通过模拟测试,展示了如何正确管理和使用try-catch以防止内存泄漏,强调了在finally块中进行清理的重要性。

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

iOS try-catch memory leak详解

无论多优秀的客户端的工程师,都架不住服务端不经意间给你吐回的异常数据,怎么能够尽量的避免被坑呢?一个可能的方式,在使用数据之前做好类型校验;另一个,在涉及一些可能会越界或者自己不放心的地方,加一下try-catch,不过使用try-catch的时候,有一些注意事项,其中最重要的就是 memory leak。

如何模拟或者检查泄漏?

定义一个最简单的测试类:

@interface TestObject : NSObject

@end

@implementation TestObject
- (void)dealloc{
    NSLog(@"TestObject dealloc");
}
@end

随便定义一个VC,构造一个异常出来:

NSException *e = nil;
- (void)test1{
    NSString*name =@"exception name";
    NSString*reason =@"exception reason";
    e = [NSException exceptionWithName:name reason:reason userInfo:nil];
    @throw e;
}

- (void)test{
    @try {
        TestObject *obj = [[TestObject alloc] init];
        [self test1];
    }
    @catch (NSException *exception)
    {
    }
}

在定义的VC的viewDidLoad中,调用test方法:

[self test];

会发现TestObject的dealloc没有调用,内存泄漏了,所以这种使用姿势,是不行的</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值