zoukankan      html  css  js  c++  java
  • iOS 中常用的技巧

     1 A.clang warning
     2 #pragma clang diagnostic push 
     3 #pragma clang diagnostic ignored "-Wgnu" 
     4 //code 
     5 #pragma clang diagnostic pop  
     6 
     7 表示在这个区间里忽略一些特定的clang的编译警告,因为AFNetworking作为一个库被其他项目引用,所以不能全局忽略clang的一些警告,只能在有需要的时候局部这样做,作者喜欢用?:符号,所以经常见忽略-Wgnu警告的写法
     8 
     9 dispatch_once
    10 为保证线程安全,所有单例都用dispatch_once生成,保证只执行一次,这也是iOS开发常用的技巧。例如:
    11 static dispatch_queue_t url_request_operation_completion_queue() { 
    12     static dispatch_queue_t af_url_request_operation_completion_queue; 
    13     static dispatch_once_t onceToken; 
    14     dispatch_once(&onceToken, ^{ 
    15         af_url_request_operation_completion_queue = dispatch_queue_create("com.alamofire.networking.operation.queue",   DISPATCH_QUEUE_CONCURRENT ); 
    16     }); 
    17     return af_url_request_operation_completion_queue; 
    18 } 
    19 
    20 C.weak & strong self
    21 常看到一个 block 要使用 self,会处理成在外部声明一个 weak 变量指向 self,在 block 里又声明一个 strong 变量指向 weakSelf:
    22 __weak __typeof(self)weakSelf = self; 
    23 self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ 
    24     __strong __typeof(weakSelf)strongSelf = weakSelf; 
    25 }]; 
    26 weakSelf是为了block不持有self,避免循环引用,而再声明一个strongSelf是因为一旦进入block执行,就不允许self在这个执行过程中释放。block执行完后这个strongSelf会自动释放,没有循环引用问题。
  • 相关阅读:
    努力的一分不会少
    C语言中的数组的访问方式
    代码的规划与规范化
    Manjaro中源码安装gcc7.1
    周围都是敌人,方法总比问题多
    elementary os 0.4.1下编译GCC-7.1源码并安装成功
    C语言中的基础知识变量探讨
    19年的桌面KDE的风雨和陪伴,没有什么能够割舍
    《手把手教你学C语言》学习笔记(10)--- 程序的循环控制
    copy 的实现原理与深浅拷贝
  • 原文地址:https://www.cnblogs.com/ndyBlog/p/4136846.html
Copyright © 2011-2022 走看看