属性锁TimeLock

简介:

属性锁TimeLock

这是本人所写的几个类,用于对属性设置值时进行锁定与解锁,适用于高逼格动画当中。

源码:

TimeLock.h 与 TimeLock.m

//
//  TimeLock.h
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void (^timeLockBlock)();

@interface TimeLock : NSObject

@property (nonatomic, assign) BOOL lock;

@end


//
//  TimeLock.m
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "TimeLock.h"

@implementation TimeLock

@end

延时锁:

TimeDelayLock.h 与 TimeDelayLock.m

//
//  TimeDelayLock.h
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "TimeLock.h"
#import <UIKit/UIKit.h>

@interface TimeDelayLock : TimeLock

/**
 *  延时的时间
 */
@property (nonatomic, assign) CGFloat duration;

/**
 *  执行上锁的block
 *
 *  @param block 可执行代码
 */
- (void)excuteBlock:(timeLockBlock)block;

@end

仅运行一次的锁:

TimeLockOnce.h 与 TimeLockOnce.m

//
//  TimeLockOnce.h
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "TimeLock.h"

@interface TimeLockOnce : TimeLock

/**
 *  执行上锁的block
 *
 *  @param block 可执行代码
 */
- (void)excuteBlock:(timeLockBlock)block;

@end


//
//  TimeLockOnce.m
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "TimeLockOnce.h"

@implementation TimeLockOnce

- (void)excuteBlock:(timeLockBlock)block {
    if (self.lock == NO) {
        self.lock = YES;
        
        block();
    }
}

@end

使用时候的详情:
//
//  Model.h
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Model : NSObject

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *sex;

@end


//
//  Model.m
//  TimeLock
//
//  Created by YouXianMing on 14/12/3.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "Model.h"
#import "TimeLockOnce.h"
#import "TimeDelayLock.h"

@interface Model ()

@property (nonatomic, strong) TimeDelayLock *delayLock;
@property (nonatomic, strong) TimeLockOnce  *lockOnce;

@end

@implementation Model

- (instancetype)init
{
    self = [super init];
    if (self) {
        self.delayLock = [TimeDelayLock new];
        self.lockOnce  = [TimeLockOnce new];
    }
    return self;
}

@synthesize name = _name;
- (void)setName:(NSString *)name {
    [self.delayLock excuteBlock:^{
        _name = name;
    }];
}
- (NSString *)name {
    return _name;
}

@synthesize sex = _sex;
- (void)setSex:(NSString *)sex {
    [self.lockOnce excuteBlock:^{
        _sex = sex;
    }];
}
- (NSString *)sex {
    return _sex;
}

@end

目录
相关文章
|
关系型数据库 MySQL 索引
从一个案例深入剖析InnoDB隐式锁和可见性判断(3)
从一个案例深入剖析InnoDB隐式锁和可见性判断
|
存储 关系型数据库 MySQL
从一个案例深入剖析InnoDB隐式锁和可见性判断(4)
从一个案例深入剖析InnoDB隐式锁和可见性判断
668 0
|
NoSQL 关系型数据库 索引
从一个案例深入剖析InnoDB隐式锁和可见性判断(1)
从一个案例深入剖析InnoDB隐式锁和可见性判断
122 0
从一个案例深入剖析InnoDB隐式锁和可见性判断(1)
|
SQL 关系型数据库 MySQL
从一个案例深入剖析InnoDB隐式锁和可见性判断(2)
从一个案例深入剖析InnoDB隐式锁和可见性判断
从一个案例深入剖析InnoDB隐式锁和可见性判断(2)
|
自然语言处理 Java
Java小白踩坑录 - 连 equal 和 hashcode 都处对象了
Java小白踩坑录 - 连 equal 和 hashcode 都处对象了
99 0
Java小白踩坑录 - 连 equal 和 hashcode 都处对象了
|
3天前
|
关系型数据库 Serverless 分布式数据库
高峰无忧,探索PolarDB PG版Serverless的弹性魅力
在数字经济时代,数据库成为企业命脉,面对爆炸式增长的数据,企业面临管理挑战。云原生和Serverless技术革新数据库领域,PolarDB PG Serverless作为阿里云的云原生数据库解决方案,融合Serverless与PostgreSQL,实现自动弹性扩展,按需计费,降低运维成本。它通过计算与存储分离技术,提供高可用性、灾备策略和简化运维。PolarDB PG Serverless智能应变业务峰值,实时监控与调整资源,确保性能稳定。通过免费体验,用户可观察其弹性性能和价格力,感受技术优势。
|
11天前
|
Kubernetes 安全 Devops
【云效流水线 Flow 测评】驾驭云海:五大场景下的云效Flow实战部署评测
云效是一款企业级持续集成和持续交付工具,提供免费、高可用的服务,集成阿里云多种服务,支持蓝绿、分批、金丝雀等发布策略。其亮点包括快速定位问题、节省维护成本、丰富的企业级特性及与团队协作的契合。基础版和高级版分别针对小型企业和大规模团队,提供不同功能和服务。此外,云效对比Jenkins在集成阿里云服务和易用性上有优势。通过实战演示了云效在ECS和K8s上的快速部署流程,以及代码质量检测和AI智能排查功能,展示了其在DevOps流程中的高效和便捷,适合不同规模的企业使用。本文撰写用时5小时,请各位看官帮忙多多支持,如有建议也请一并给出,您的建议能帮助我下一篇更加出色。
136105 16
|
13天前
|
存储 缓存 监控
你的Redis真的变慢了吗?性能优化如何做
本文先讲述了Redis变慢的判别方法,后面讲述了如何提升性能。
102158 2
|
13天前
|
机器学习/深度学习 并行计算 算法
Transformer 一起动手编码学原理
学习Transformer,快来跟着作者动手写一个。
94231 2
|
12天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读