博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AFNetworking源码的学习
阅读量:5255 次
发布时间:2019-06-14

本文共 734 字,大约阅读时间需要 2 分钟。

忽略编译警告

AFNetworking源码中常常会出现忽略警告的代码,如下:

1
2
3
4
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgnu"
// code
#pragma clang diagnostic pop

表示在这个区间里忽略一些特定的clang的编译警告,因为AFNetworking作为一个库被其他项目引用,所以不能全局忽略clang的一些警告,只能在有需要的时候局部这样做。更详细说明参考。

weak & strong self

常看到一个block要使用self,会处理成在外部声明一个weak变量指向self,在block里又声明一个strong变量指向weakSelf:

1
2
3
4
__
weak __typeof(self)weakSelf = self;
self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
__
strong __typeof(weakSelf)strongSelf = weakSelf;
}];

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

参考:

  1. 博客;
  2. 唐巧大神的《iOS开发进阶》;

转载于:https://www.cnblogs.com/FightingLuoYin/p/4334450.html

你可能感兴趣的文章
eclipse安装反编译插件
查看>>
Farpoint使用一点小总结
查看>>
各种连接字符串
查看>>
P3295 [SCOI2016]萌萌哒
查看>>
P2115 [USACO14MAR]破坏Sabotage
查看>>
路由器开发(二)—— 路由器工作原理
查看>>
用户空间和内核空间通讯之【Netlink 上】
查看>>
sql语句 MySQL
查看>>
Could not find Developer Disk Image 9.3
查看>>
OO Unit 1 表达式求导
查看>>
水果篮子
查看>>
控制器1.0
查看>>
hadoop伪分布式模式的搭建
查看>>
字符串查找
查看>>
BZOJ 3211 弗洛拉前往国家 树阵+并检查集合
查看>>
BZOJ 1150 CTSC2007 数据备份Backup 堆+馋
查看>>
秒杀程序数据库设计
查看>>
【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑...
查看>>
JavaScript递归
查看>>
UI篇—懒加载
查看>>