OC 中的block使用

在iOS开发里,块的使用广泛且便利,但要注意内存泄露问题。块创建时会增加内部对象引用计数,直至销毁。以AFNetworking代码为例,通过声明weakSelf和strongSelf处理,避免循环引用,保证执行过程中self不释放。

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

  在iOS的开发过程中,使用块的地方很多也很方便,但是在使用块的过程中要注意内存泄露的问题。

  在块创建的时候,会对块内的所有对象的引用计数加一,直到块销毁,所以在使用块的过程中需要我们进行处理,在这里以AFNetworking的代码举例,代码如下:

  

__weak __typeof(self)weakSelf = self; 
self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ 
    __strong __typeof(weakSelf)strongSelf = weakSelf; 
}]; 

  weakSelf是为了block不持有self,避免循环引用,而再声明一个strongSelf是因为一旦进入block执行,就不允许self在这个执行过程中释放。block执行完后这个strongSelf会自动释放,没有循环引用问题。

转载于:https://www.cnblogs.com/pretty-guy/p/4595989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值