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

news/2024/7/20 23:03:21 标签: ios, 循环引用, weak, block
block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
weak __typeof(self)weakSelf = self; hljs ruby">
    __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 方法调用)


http://www.niftyadmin.cn/n/1557822.html

相关文章

微软以75亿美元收购GitHub

微软已经宣布达成收购GitHub的协议,该收购将在今年晚些时候完成,双方都表示GitHub仍旧是一个开放的平台,致力于支持开发人员使用任何工具以及将代码部署到任何平台。\\微软首席执行官Satya Nadella在微软官方博客上写道,“开发人员…

Js中parseFloat()方法所产的精度不一致问题

问题 用户输入某个数字 X,代表 X万,post请求时数据 *parseFloat(X) 10000,当用户输入 11.04 时 parseFloat(11.04) * 10000 // 110399.99999999999经实践: parseFloat(1.04) * 10000 // 10400 parseFl…

DMA(直接存储器存取)

DMA(Direct Memory Access) DMA(Direct Memory Access)即直接存储器存取,是一种快速传送数据的机制。 工作原理 DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。   要把外设的数据读入内存或把内存的…

[转] Objective-C中的@property和@synthesize用法

Objective-C中的property和synthesize用法 http://blog.csdn.net/zhiganglet/article/details/7546333

js计算二维数组,相同位上的总和--[[1,2,3,4],[1,2,3,4],[1,2,3,4]]结果为[3,6,9,12](js逻辑)

项目上让计算[[1,2,3,4],[1,2,3,4],[1,2,3,4]] 相同位的和 let result[]; let dataArr[[1,2,3],[2,2,5] ] for (let key in dataArr) {dataArr[key].forEach((value, index) > {if (result[index] null || result[index] "") {//判断是否为空把result,每一项都…

vue 支付宝支付

使用浏览器调起支付宝流程&#xff1a; 点击支付宝支付调用后台接口&#xff0c;后台返回一个form表单&#xff0c; 提交form就可以调用支付宝支付了 页面 // alipayWap: 后台接口返回的form 片段 <div v-html"alipayWap" ref"alipayWap"></div…

[转] 懒加载

http://www.jianshu.com/p/b9551a761419 http://www.cnblogs.com/wendingding/p/3742555.html (文顶顶)

小问题,在自执行函数前定义变量的问题

var obj {name:nan } obj.fun function(){console.log(1) }(function(){console.log(2) })() 这样会输出 1 VM29719:6 Uncaught TypeError: (intermediate value)(...) is not a function 因为没有在定义obj.fun时添加分号&#xff0c;导致 obj.fun function(){console.log(…