第三方类库SVProgressHUD的学习

SVProgressHUD这个类库用的比较多了。。用起来很简单。。

1.dispatch_once 创建单例

void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);
    该函数接收一个 dispatch_once用于检查该代码块是否已经被调度的谓词(是一个长整型,实际上作为 BOOL使用)。它还接收一个希望在应用的生命周期内仅被调度一次的代码块,对于本例就用于shared实例的实例化。
dispatch_once不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着你不需要使用诸如 @synchronized之类的来防止使用多个线程或者队列时不同步的问题。Apple的 GCD Documentation证实了这一点:如果被多个线程调用,该函数会同步等等直至代码块完成。
  实际要如何使用这些呢?好吧,假设有一个 AccountManager类,你想在整个应用中访问该类的共享实例。你可以按如下代码简单实现一个类方法:

+ (SVProgressHUD*)sharedView {

    static dispatch_once_t once;

    static SVProgressHUD *sharedView;

    dispatch_once(&once, ^ { 

sharedView = [[self alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    });

    return sharedView;

}

这就意味着你任何时候访问共享实例,需要做的仅是:
SVProgressHUD *svprogress = [ SVProgressHUD sharedView];
    就这些,你现在在应用中就有一个共享的实例,该实例只会被创建一次。
    该方法有很多优势: 
           1 线程安全
           2 很好满足静态分析器要求
           3 和自动引用计数(ARC)兼容 
           4 仅需要少量代码 
        该方法的劣势就是它仍然运行创建一个非共享的实例:
    SVProgressHUD  *svprogress = [ SVProgressHUD   sharedView ];
        有些时候你希望有这种行为,但如果正在想要的是仅一个实例被实例化就需要注意这点。

    2.一堆showXXXX的函数都是围绕着

    - (void)showProgress:(float)progress status:(NSString*)string maskType:(SVProgressHUDMaskType)hudMaskType ;

    progress>0   

    这里里面先是创建了一个UIControl类型的overlayView 他执行的功能就是发一个SVProgressHUDDidReceiveTouchEventNotification的通知

    然后这个东西在那里接收还没有找到 //TODO

    //猜测这个应该是用于你自己需要手动把这个view移掉或者进行其他工作时你可以接收这个通知

    之后是创建了一个遍历数组的枚举

    NSEnumerator *frontToBackWindows = [[[UIApplication sharedApplication]windows]reverseObjectEnumerator];

    按照索引号从大到小访问UIApplication里的Windows

    寻找到UIWindowLevelNormal的Window把overlayView添加进去

    再向下就是一些添加,修改属性的东西.

    //中间还遇到了

    __IPHONE_OS_VERSION_MIN_REQUIRED  //当前系统支持的最小版本

    __IPHONE_OS_VERSION_MAX_REQUIRED  //当前系统支持的最大版本




    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值