属性锁TimeLock
2023-09-14 08:57:16 时间
属性锁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; @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
相关文章
- spring mvc: 属性方法名称解析器(多动作控制器)MultiActionController/ControllerClassNameHandlerMapping/PropertiesMethodNameResolver
- 《从零开始学Swift》学习笔记(Day 31)——存储属性
- android自定义控件(理论知识学习 +自定义属性的讲解)
- Angular Component class属性初始化和构造函数执行的先后顺序
- python读取图片属性信息
- 【Android Gradle 插件】DexOptions 配置 ③ ( additionalParameters 属性配置 | 多 dex 参数配置 | --multi-dex 参数 )
- Spring Transaction属性之Propagation
- Android - TextView Ellipsize属性
- Objective-C 类属性和方法的訪问权限
- 【Android】属性动画
- jQuery 属性