属性锁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

最新文章

  1. 原: 安装VMtools过程流水帐
  2. React 快速入门小记
  3. 接收新信息,在会话中看不到(thread表数据插入/更新失败)
  4. oracle物化视图
  5. LintCode First Position of Target
  6. Quartz 2D绘制简单图形
  7. 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)
  8. 使用windows服务和MSMQ和进行日志管理(解决高并发问题)
  9. 随机数、continue、break
  10. fcntl()
  11. jquery 实现飘落效果
  12. 如是使用JS实现页面内容随机显示
  13. Java web JavaScript DOM 编程
  14. [BZOJ1024] [SCOI2009] 生日快乐 (搜索)
  15. 禁止WPS2019开机自启动
  16. Python二维数组,坑苦了
  17. redis整合Spring集群搭建及业务中的使用
  18. Umbraco 7 特点
  19. 【转】vue中动态设置meta标签和title标签
  20. canvas 实现时钟效果

热门文章

  1. 03-oracle数值函数
  2. 记一次简单的关于SimpleDateFormat的优化
  3. 安装APK时报 Installation failed with message Failed to finalize session : INSTALL_FAILED_USER_RESTRICTED: Invalid apk.
  4. RMQ(求区间最值问题)
  5. java中String,StringBuffer与StringBuilder的区别??
  6. EntityFrameWork Code First 一对多关系处理
  7. ELF文件解析器支持x86x64ELF文件
  8. bzoj 4540: [Hnoi2016]序列
  9. Html上传大文件
  10. SEO 小技巧汇总