最近看 AFNetworking 代码,有个地方有点儿疑惑,希望各位大大帮我分析一下。
建立单例,在一次性运行代码运行之前加上这句 static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil;
尤其是 =nil
,那么在单例建成后每次调用不都会将它置为 nil 吗?
变量声明这边NSArray *_xxx
这种声明方式是否有什么特别之处? 本人菜鸟,谢谢大大们赐教啊。
static NSArray * AFHTTPRequestSerializerObservedKeyPaths() {
//1.在单例建成后每次调用不都会将它置为 nil 吗?
//2.NSArray *_xxx声明方式有什么特别之处?
static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_AFHTTPRequestSerializerObservedKeyPaths =@[NSStringFromSelector(@selector(allowsCellularAccess)),NSStringFromSelector(@selector(cachePolicy)),NSStringFromSelector(@selector(HTTPShouldHandleCookies)),NSStringFromSelector(@selector(HTTPShouldUsePipelining)), NSStringFromSelector(@selector(networkServiceType)), NSStringFromSelector(@selector(timeoutInterval))];
});
return _AFHTTPRequestSerializerObservedKeyPaths;
}
1
mornlight 2017-01-04 22:01:18 +08:00
static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil;
即使方法多次调用, _AFHTTPRequestSerializerObservedKeyPaths 也只被初始化赋值一次。 参考: http://rypress.com/tutorials/objective-c/functions |
3
vincentxue 2017-01-04 23:28:48 +08:00
问题 1 是 static 关键字的用途,这个是 C 语言的基础知识。建议搜索“ static 关键字”了解一下。
问题 2 是变量命名的问题,这个并没有什么特别之处,取决于团队的编码规范。非要说特别之处的话,在 OC 中有属性这种特性的存在,声明属性可以合成相应的实例变量,变量名是属性名的前面加上一个下划线。例如 @property NSObject *a; 合成的实例变量名是 _a 。 |
4
caileijuve 2017-01-05 09:36:55 +08:00
一般内部成员变量喜欢以_开头命名
|