• IOS 手动添加第三方库报错问题


    当不想使用CocoaPods来管理和使用第三方库的时候,就需要手动添加和配置这些第三方库,难免会出现一些问题,主要问题汇总如下:

    1、AFNetworking、NKNetWork、ZxingObjC等第三方库为了支持低版本的系统(IOS 5,6)会出现不能编译如下代码

    @property (nonatomic, strong)dispatch_queue_t

    这是因为,当IOS SDK版本>=6.0时,ARC会管理GCD对象,当IOS SDK版本<6.0时,GCD是需要手动管理的,兼容则需要写如下代码

    //声明属性时
    #if OS_OBJECT_USE_OBJC
    @property (strong, nonatomic) dispatch_queue_t barrierQueue;
    #else
    @property (assign, nonatomic) dispatch_queue_t barrierQueue;
    #endif
    
    
    //在dealloc方法中应该加上
    #if !OS_OBJECT_USE_OBJC   //这个宏是在sdk6.0之后才有的,如果是之前的,则OS_OBJECT_USE_OBJC为0
    dispatch_release(_barrierQueue);
    #endif
    
    //当然了,也可以使用
    #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 // 6.0sdk之前
    dispatch_release(_barrierQueue);
    #endif
    
    
    // __IPHONE_OS_VERSION_MIN_REQUIRED  是在工程最低部署sdk版本
    // OS_OBJECT_USE_OBJC  这个宏是在SDK6.0之后才有的,若是6.0之前则为0

    如果你部署的最低目标低于 iOS 6.0 or Mac OS X 10.8
    你应该自己管理GCD对象,使用(dispatch_retain,dispatch_release),ARC并不会去管理它们

    如果你部署的最低目标是 iOS 6.0 or Mac OS X 10.8 或者更高的
    ARC已经能够管理GCD对象了,这时候,GCD对象就如同普通的OC对象一样,不应该使用dispatch_retain 或 dispatch_release

  • 相关阅读:
    GLSL逐像素光照 【转】
    GLSL逐顶点光照[转]
    GLSL 基础量定义 【转】
    GLSL纹理贴图 【转】
    NormalMap 贴图 [转]
    glsl镜面水倒影的实现[转]
    C#调用C++Dll封装时遇到的一系列问题【转】
    在C#中使用C++编写的类——用托管C++进行封装[转]
    GEOS 使用的例子
    昌平区2015年义务教育阶段入学工作意见 (含非京籍)
  • 原文地址:https://www.cnblogs.com/nmzd/p/4645026.html
Copyright © 2020-2023  润新知