iOS 防止循环引用的两个方法

本文详细介绍了如何在SwiftUI框架中利用UITableView实现弹性下拉刷新功能,通过使用`addJElasticPullToRefreshViewWithActionHandler`方法来控制下拉刷新的动作,确保在操作过程中避免循环引用问题。同时,展示了使用`__weak__typeof(self)`和`__blockUITableViewController*weakself=self`两种方法来解决循环引用问题,确保代码的稳定性和效率。

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


    __block UITableViewController *weakself  = self;

    [self.tableView addJElasticPullToRefreshViewWithActionHandler:^{
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{


            //请求好数据,停止刷新
            [weakself.tableView stopLoading];
        });
    }LoadingView:loadingViewCircle];

以上代码中 存在于UITableViewController 中 self拥有tableView这样一个成员变量(废话)
在此block块中, 我们要针对 self.tableview 调用停止刷新方法
这样 难免会出现循环引用的问题


__weak __typeof(self)weakSelf = self;

或者

__block UITableViewController *weakself = self;

这两方法都可以 至少不报错

就是不知道第二个方法 定义一新的UITableviewController 会不会产生一个新的UITabviewController (感觉应该不会 ,这里没用 alloc init 方法调用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值