V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
run2016
V2EX  ›  问与答

AFNetworking 阅读过程中的一个问题求解

  •  
  •   run2016 · 2017-01-04 20:55:02 +08:00 · 1721 次点击
    这是一个创建于 2914 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看 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;
         }
      
    4 条回复    2017-01-05 09:36:55 +08:00
    mornlight
        1
    mornlight  
       2017-01-04 22:01:18 +08:00
    static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil;

    即使方法多次调用, _AFHTTPRequestSerializerObservedKeyPaths 也只被初始化赋值一次。

    参考: http://rypress.com/tutorials/objective-c/functions
    run2016
        2
    run2016  
    OP
       2017-01-04 22:57:35 +08:00
    @mornlight 多谢~ 参考网站的文章字体和图片都很 Q :)
    vincentxue
        3
    vincentxue  
       2017-01-04 23:28:48 +08:00
    问题 1 是 static 关键字的用途,这个是 C 语言的基础知识。建议搜索“ static 关键字”了解一下。

    问题 2 是变量命名的问题,这个并没有什么特别之处,取决于团队的编码规范。非要说特别之处的话,在 OC 中有属性这种特性的存在,声明属性可以合成相应的实例变量,变量名是属性名的前面加上一个下划线。例如 @property NSObject *a; 合成的实例变量名是 _a 。
    caileijuve
        4
    caileijuve  
       2017-01-05 09:36:55 +08:00
    一般内部成员变量喜欢以_开头命名
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:17 · PVG 05:17 · LAX 13:17 · JFK 16:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.