以下是本人在浏览YYKit
框架时感觉可以用到的方法:
NSArray
//随机在数组里去一个元素,传空数组返回nil
- (nullable id)randomObject;
//通过下标选取元素,下标越界也不会崩溃,下标越界返回nil
- (nullable id)objectOrNilAtIndex:(NSUInteger)index;
//将 NSString/NSNumber/NSDictionary/NSArray 转为
json字符串,不进行系列化(不删除空格和回车)
- (nullable NSString *)jsonStringEncoded;
//将数据进行序列化json格式转换,删除空格回车等
- (nullable NSString *)jsonPrettyStringEncoded;
NSMutableArray
//删除数组第一个元素,并把被删除的元素返回
- (nullable id)popFirstObject;
//删除数组最后一个元素,并把被删除的元素返回
- (nullable id)popLastObject;
//增加一个非空类型,如果为空会报错
- (void)appendObject:(id)anObject;
//插入一个非空类型 到数组的首位
- (void)prependObject:(id)anObject;
//增加元素为另一个数组的全部元素,数组为空,方法不执行
- (void)appendObjects:(NSArray *)objects;
//将要增加的数组元素放到首位,数组为空,方法不执行
- (void)prependObjects:(NSArray *)objects;
//将数组元素添加到指定位置
- (void)insertObjects:(NSArray *)objects atIndex:(NSUInteger)index;
//将数组元素倒序输出
- (void)reverse;
//将数组元素随机排列
- (void)shuffle;
NSDictionary
//将字典键排序,升序排序
- (NSArray *)allKeysSorted;
//values根据键升序排序
- (NSArray *)allValuesSortedByKeys;
//判断键在字典中是否有值,键为空返回NO,有键对应的值返回YES
- (BOOL)containsObjectForKey:(id)key;
//根据数组元素返回相应的键值新字典,如果键对应值为空则为nil
- (NSDictionary *)entriesForKeys:(NSArray *)keys;
//将xml语句返回为字典,键值对是怎么弄得,没看懂
+ (nullable NSDictionary *)dictionaryWithXML:(id)xmlDataOrString;
//根据键删除值,并把值返回
- (nullable id)popObjectForKey:(id)aKey;
//根据字典元素删除字典元素,并把被删除的值以字典返回
- (NSDictionary *)popEntriesForKeys:(NSArray *)keys;
NSString
//将字符串以base64编码
- (nullable NSString *)base64EncodedString;
//将base64编码字符串转为utf8编码字符串
+ (nullable NSString *)stringWithBase64EncodedString:(NSString *)base64EncodedString;
//根据字体字号大小,设置的宽高,换行模式,返回重写的宽高
- (CGSize)sizeForFont:(UIFont *)font size:(CGSize)size mode:(NSLineBreakMode)lineBreakMode;
//传入字号大小,默认宽高字体最大,返回字体的宽
- (CGFloat)widthForFont:(UIFont *)font;
//传入字号大小,给定宽度,不换行,返回字体高度
- (CGFloat)heightForFont:(UIFont *)font width:(CGFloat)width;
//删除字符串中的空格和换行
- (NSString *)stringByTrim;
将字符串转化成xxx@(scale)x;例:@"name" to @"name@2x" 在末尾追加
- (NSString *)stringByAppendingNameScale:(CGFloat)scale;
//判断字符串中是否有空格
- (BOOL)isNotBlank;
//将字符串转化为number类型
- (nullable NSNumber *)numberValue;
//将字符串转化为data类型
- (nullable NSData *)dataValue;
//返回一个range 0到字符串长度
- (NSRange)rangeOfAll;
//将json字符串,转成字典@"{"name":"a","count":2}" => NSDictionary: @[@"name":@"a",@"count":@2]
- (nullable id)jsonValueDecoded;
NSAttributedString
//将数据归档成data数据
- (nullable NSData *)archiveToData;
//将data数据解档为字符串
+ (nullable instancetype)unarchiveFromData:(NSData *)data;
//给定范围的字体,设置字号大小
- (void)setFont:(nullable UIFont *)font range:(NSRange)range;
//设置字距
@property (nullable, nonatomic, strong, readwrite) NSNumber *kern;
//给指定范围的字体设置字距
- (void)setKern:(nullable NSNumber *)kern range:(NSRange)range;
//整个字体的颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *color;
//给定范围设置字体颜色
- (void)setColor:(nullable UIColor *)color range:(NSRange)range;
//设置整个字体的背景颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *backgroundColor;
//给定范围设置字体的背景
- (void)setBackgroundColor:(nullable UIColor *)backgroundColor range:(NSRange)range;
//描边,不懂怎么用
@property (nullable, nonatomic, strong, readwrite) NSNumber *strokeWidth;
//给定范围,增加描边
- (void)setStrokeWidth:(nullable NSNumber *)strokeWidth range:(NSRange)range;
//描边的颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *strokeColor;
//给定范围,描边的颜色
- (void)setStrokeColor:(nullable UIColor *)strokeColor range:(NSRange)range;
//文字阴影
@property (nullable, nonatomic, strong, readwrite) NSShadow *shadow;
//给定范围文字的颜色
- (void)setShadow:(nullable NSShadow *)shadow range:(NSRange)range;
//删除线的样式
@property (nonatomic, readwrite) NSUnderlineStyle strikethroughStyle;
//给定范围,删除线的颜色
- (void)setStrikethroughStyle:(NSUnderlineStyle)strikethroughStyle range:(NSRange)range;
//删除线的颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *strikethroughColor;
//给定范围删除线的颜色
- (void)setStrikethroughColor:(nullable UIColor *)strikethroughColor range:(NSRange)range NS_AVAILABLE_IOS(7_0);
//下划线样式
@property (nonatomic, readwrite) NSUnderlineStyle underlineStyle;
//给定范围,下划线的样式
- (void)setUnderlineStyle:(NSUnderlineStyle)underlineStyle range:(NSRange)range;
//下划线样式
@property (nullable, nonatomic, strong, readwrite) UIColor *underlineColor;
//给定范围,下划线的颜色
- (void)setUnderlineColor:(nullable UIColor *)underlineColor range:(NSRange)range;
- ....省略一些,不是太用
//文字对齐方式
@property (nonatomic, readwrite) NSTextAlignment alignment;
//给定范围的文字对齐方式
- (void)setAlignment:(NSTextAlignment)alignment range:(NSRange)range;
---Convenience methods for text highlight---
//范围,颜色,背景色,文字个性化设置 比如:`NSTextEffectAttributeName`等属性,自己百度查;点击事件,长按事件,没有默认传nil
- (void)setTextHighlightRange:(NSRange)range
color:(nullable UIColor *)color
backgroundColor:(nullable UIColor *)backgroundColor
userInfo:(nullable NSDictionary *)userInfo
tapAction:(nullable YYTextAction)tapAction
longPressAction:(nullable YYTextAction)longPressAction;
//范围,颜色,背景色,点击事件
- (void)setTextHighlightRange:(NSRange)range
color:(nullable UIColor *)color
backgroundColor:(nullable UIColor *)backgroundColor
tapAction:(nullable YYTextAction)tapAction;
//范围,颜色,背景色,字体个性设置
- (void)setTextHighlightRange:(NSRange)range
color:(nullable UIColor *)color
backgroundColor:(nullable UIColor *)backgroundColor
userInfo:(nullable NSDictionary *)userInfo;
//插入字符串到指定位置
- (void)insertString:(NSString *)string atIndex:(NSUInteger)location;
//增加字符串到末尾
- (void)appendString:(NSString *)string;
NSObject
//当前线程上调用方法,可传参数....参数用来干啥?
- (nullable id)performSelectorWithArgs:(SEL)sel, ...;
//当前线程延时几秒后调用,可传参数....参数用来干啥?
- (void)performSelectorWithArgs:(SEL)sel afterDelay:(NSTimeInterval)delay, ...;
//延时调用方法,不可传参
- (void)performSelector:(SEL)sel afterDelay:(NSTimeInterval)delay;
...还有一些调用属性关于线程....
//当前类名
+ (NSString *)className;
....NSObjectForKVO一些属性自行了解....
NSObject+YYModel
//将`NSDictionary`,`NSString`,`NSData` json格式化
+ (nullable instancetype)modelWithJSON:(id)json;
//将一个数据字典转模型
+ (nullable instancetype)modelWithDictionary:(NSDictionary *)dictionary;
//将json数据,转为model
- (nullable id)modelToJSONObject;
//将model转data数据
- (nullable NSData *)modelToJSONData;
//将model转为字符串
- (nullable NSString *)modelToJSONString;
//将模型复制一份
- (nullable id)modelCopy;
//当前模型对象与另一个模型对象是否相等;YES,相等;反之
- (BOOL)modelIsEqual:(id)model;
//模型的描素,返回一个字符串
- (NSString *)modelDescription;
NSArray (YYModel)
//将json信息转为数组格式;例如:[{"name","Mary"},{name:"Joe"}];`cls `:[NSArray class]
+ (nullable NSArray *)modelArrayWithClass:(Class)cls json:(id)json;
//同上;
+ (nullable NSDictionary *)modelDictionaryWithClass:(Class)cls json:(id)json;
//替换属性,比如:id替换成ID 格式如下:
+ (NSDictionary *)modelCustomPropertyMapper {
return @{@"ID" : @"id",
}
+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper;
//格式验证;比如:
@property NSString *name;
+ (NSDictionary *)modelContainerPropertyGenericClass {
return @{@"name" : [NSString class],
}
//用于判断json数据格式的验证,保证数据正确性.->容器类型
+ (nullable NSDictionary<NSString *, id> *)modelContainerPropertyGenericClass;
//模型解析时,黑白名单一下为黑白名单简介
+ (nullable NSArray<NSString *> *)modelPropertyBlacklist;
+ (nullable NSArray<NSString *> *)modelPropertyWhitelist;
//如果一个 Model 需要忽略某些属性,则可以通过
实现协议中的 modelPropertyBlacklist 来返回属性名列表,
YYModel 会在处理过程中忽略这些属性;
//如果一个 Model 只需要处理某些特性的属性,则可以通过实现
协议中的 modelPropertyWhitelist 来返回属性名列表,
YYModel 在处理中只会处理列表内的属性
NSDate
//返回当前时间,格式自己设置;比如:[NSDate stringWithFormat:@"yyyy-MM-dd HH:mm:ss"];
- (nullable NSString *)stringWithFormat:(NSString *)format;
//将时间字符串以指定时间格式转换为Date
+ (nullable NSDate *)dateWithString:(NSString *)dateString format:(NSString *)format;
NSTimer
//和系统方法无差别,将SEL事件以block封装
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds block:(void (^)(NSTimer *timer))block repeats:(BOOL)repeats;
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds block:(void (^)(NSTimer *timer))block repeats:(BOOL)repeats;
UIApplication
/// "Documents" folder in this app's sandbox.
@property (nonatomic, readonly) NSURL *documentsURL;
@property (nonatomic, readonly) NSString *documentsPath;
/// "Caches" folder in this app's sandbox.
@property (nonatomic, readonly) NSURL *cachesURL;
@property (nonatomic, readonly) NSString *cachesPath;
/// "Library" folder in this app's sandbox.
@property (nonatomic, readonly) NSURL *libraryURL;
@property (nonatomic, readonly) NSString *libraryPath;
/// Application's Bundle Name (show in SpringBoard).
@property (nullable, nonatomic, readonly) NSString *appBundleName;
/// Application's Bundle ID. e.g. "com.ibireme.MyApp"
@property (nullable, nonatomic, readonly) NSString *appBundleID;
/// Application's Version. e.g. "1.2.0"
@property (nullable, nonatomic, readonly) NSString *appVersion;
/// Application's Build number. e.g. "123"
@property (nullable, nonatomic, readonly) NSString *appBuildVersion;
/// Whether this app is being debugged (debugger attached).
@property (nonatomic, readonly) BOOL isBeingDebugged;
//网络请求菊花旋转
- (void)incrementNetworkActivityCount;
//网络请求取消菊花旋转
- (void)decrementNetworkActivityCount;
UIDevice
//以下方法或属性的调用,都是基于[UIDevice currentDevice]
去实现的
宏定义:
//当前设备系统版本号
#define kSystemVersion [UIDevice systemVersion]
//如果系统版本大于某系统号
#define kiOS8Later (kSystemVersion >= 8)
//当前设备的系统版本号,用了`dispatch_once_t`保证安全
+ (double)systemVersion;
/// Whether the device is iPad/iPad mini.
@property (nonatomic, readonly) BOOL isPad;
/// Whether the device is a simulator.
@property (nonatomic, readonly) BOOL isSimulator;
/// Whether the device is jailbroken(越狱).
@property (nonatomic, readonly) BOOL isJailbroken;
/// Wherher the device can make phone calls.
@property (nonatomic, readonly) BOOL canMakePhoneCalls NS_EXTENSION_UNAVAILABLE_IOS("");
//手机名字 e.g "iPhone 5s" "iPad mini 2"
@property (nullable, nonatomic, readonly) NSString *machineModelName;
/// The System's startup time.(启动时间)
@property (nonatomic, readonly) NSDate *systemUptime;
/// WIFI IP address of this device (can be nil). e.g. @"192.168.1.111"
@property (nullable, nonatomic, readonly) NSString *ipAddressWIFI;
/// Cell IP address of this device (can be nil). e.g. @"10.2.2.222"
@property (nullable, nonatomic, readonly) NSString *ipAddressCell;
... 还有硬盘,内存使用情况等...
UIButton
//设置button网络图片
- (void)setImageWithURL:(nullable NSURL *)imageURL
forState:(UIControlState)state
placeholder:(nullable UIImage *)placeholder;
//设置button网络图, options 加载过程中的操作
- (void)setImageWithURL:(nullable NSURL *)imageURL
forState:(UIControlState)state
options:(YYWebImageOptions)options;
//加载网络图片,button图片加载完成后,执行block操作
- (void)setImageWithURL:(nullable NSURL *)imageURL
forState:(UIControlState)state
placeholder:(nullable UIImage *)placeholder
options:(YYWebImageOptions)options
completion:(nullable YYWebImageCompletionBlock)completion;
//加载网络背景图片
- (void)setBackgroundImageWithURL:(nullable NSURL *)imageURL
forState:(UIControlState)state
placeholder:(nullable UIImage *)placeholder;
....背景图加载与image加载相同,方法不同....
UIColor
//16进制转成色值 e.g 0x66CCFF,默认1.0 alpha
+ (UIColor *)colorWithRGB:(uint32_t)rgbaValue;
//16进制转色值,可以设置透明度
+ (UIColor *)colorWithRGB:(uint32_t)rgbValue alpha:(CGFloat)alpha;
//将一个颜色,转为16进制的值
- (uint32_t)rgbValue;
....获取 红,绿,蓝,饱和度,亮度,色调属性....
UIControl
//移除当前控制器所有taget事件
- (void)removeAllTargets;
//增加target事件,这个是增加前把之前增加的移除
- (void)setTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
//增加事件,block回调,注意循环引用
- (void)addBlockForControlEvents:(UIControlEvents)controlEvents block:(void (^)(id sender))block;
//增加事件,把以前增加都都移除掉
- (void)setBlockForControlEvents:(UIControlEvents)controlEvents block:(void (^)(id sender))block;
UIImage
//根据Data加载GIF图片,如果图片较大,不能使用这个
+ (nullable UIImage *)imageWithSmallGIFData:(NSData *)data scale:(CGFloat)scale;
//判断数据data是否可用于GIF动画
+ (BOOL)isAnimatedGIFData:(NSData *)data;
//判断路径是否可用于GIF动画
+ (BOOL)isAnimatedGIFFile:(NSString *)path;
//可传data和nsstring PDF文件转为image
+ (nullable UIImage *)imageWithPDF:(id)dataOrPath;
//将color转为图片,宽高1:1
+ (nullable UIImage *)imageWithColor:(UIColor *)color;
//将color转为图片,size 自己写
+ (nullable UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size;
//这个图像是否有alpha通道
- (BOOL)hasAlphaChannel;
//将图片裁剪,画圆角 无边框,无边框颜色
- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius;
//圆角,边框宽度,边框颜色
- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius
borderWidth:(CGFloat)borderWidth
borderColor:(nullable UIColor *)borderColor;
//圆角,边框宽度,边框颜色,边界线
- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius
corners:(UIRectCorner)corners
borderWidth:(CGFloat)borderWidth
borderColor:(nullable UIColor *)borderColor
borderLineJoin:(CGLineJoin)borderLineJoin;
.... 图片的旋转,平移,纯色图片的生成....
UIImageView
//图片链接,默认加载图
- (void)setImageWithURL:(nullable NSURL *)imageURL placeholder:(nullable UIImage *)placeholder;
//加载图片是可设置状态,e.g 状态栏菊花.图片渐现,使用缓存等...
- (void)setImageWithURL:(nullable NSURL *)imageURL options:(YYWebImageOptions)options;
//`YYWebImageCompletionBlock`包括:获取的image,url,YYWebImageFromType图片获取类型:内存获取,磁盘获取等,`YYWebImageStage`图片标志:取消,失败,完成等,
- (void)setImageWithURL:(nullable NSURL *)imageURL
placeholder:(nullable UIImage *)placeholder
options:(YYWebImageOptions)options
completion:(nullable YYWebImageCompletionBlock)completion;
....还有几个操作,此处省略....
//取消图片请求
- (void)cancelCurrentImageRequest;
//将请求完的图片设置为高亮,用法跟setimge一样.
- (void)setHighlightedImageWithURL:(nullable NSURL *)imageURL placeholder:(nullable UIImage *)placeholder;
.... 高亮用法省略....
UIGestureRecognizer
// 手势触发事件,原来手势是通过SEL来实现事件,YYKit将其封装到block中
//初始化手势时,增加block
- (instancetype)initWithActionBlock:(void (^)(id sender))block;
//为某个手势增加事件
- (void)addActionBlock:(void (^)(id sender))block;
//移除手势所有的block
- (void)removeAllActionBlocks;
UIScrollView
//滚动到指定方向,默认有动画
- (void)scrollToTop;
- (void)scrollToBottom;
- (void)scrollToLeft;
- (void)scrollToRight;
//滚动方向为指定方向,有无动画,传BOOL
- (void)scrollToTopAnimated:(BOOL)animated;
UITableView
//在做 TableView 的删除,移动等操作,需要在动画块中做操作, 要不然会造成崩溃问题
- (void)updateWithBlock:(void (^)(UITableView *tableView))block;
//滚动到指定行,
- (void)scrollToRow:(NSUInteger)row inSection:(NSUInteger)section atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
//插入到指定行
- (void)insertRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
//刷新某行
- (void)reloadRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
//删除某行
- (void)deleteRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
//通过 NSIndexPath 去插入
- (void)insertRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;
//通过 NSIndexPath 刷新
- (void)reloadRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;
//插入分区
- (void)insertSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
....刷新分区,删除分区,通过 path 刷新,删除,等....
//取消 tableview 中所有被选中的 cell
- (void)clearSelectedRowsAnimated:(BOOL)animated;
YYAnimatedImageView
// YYAnimatedImageView 是继承与 UIImageView 的所以, UIImageView中加载图片方法都使用与它.如果做动画视图的话,用它比较合适.
//是否自动播放动画
@property (nonatomic) BOOL autoPlayAnimatedImage;
//当前动画图片有多少帧
@property (nonatomic) NSUInteger currentAnimatedImageIndex;
//判断当前图片是否正在播放动画
@property (nonatomic, readonly) BOOL currentIsPlayingAnimation;
CALayer
//对 layer 进行图片
- (void)setImageWithURL:(nullable NSURL *)imageURL placeholder:(nullable UIImage *)placeholder;
//图层加载
- (void)setImageWithURL:(nullable NSURL *)imageURL options:(YYWebImageOptions)options;
...和 UIImage 用法差不多...
NSKeyedUnarchiver
//对文件和数据进行解档,与系统方法无异,多了对异常的返回在 block 中
//对 data 数据进行解档
+ (nullable id)unarchiveObjectWithData:(NSData *)data
exception:(NSException *_Nullable *_Nullable)exception;
//对指定路径文件进行解档
+ (nullable id)unarchiveObjectWithFile:(NSString *)path
exception:(NSException *_Nullable *_Nullable)exception;
YYImage && YYAnimatedImageView
//YYImage *image = [YYImage imageNamed:@"animation.webp"];
YYAnimatedImageView *imageView = [YYAnimatedImageView alloc] initWithImage:image];
+ (nullable YYImage *)imageNamed:(NSString *)name; // no cache!
+ (nullable YYImage *)imageWithContentsOfFile:(NSString *)path;
+ (nullable YYImage *)imageWithData:(NSData *)data;
+ (nullable YYImage *)imageWithData:(NSData *)data scale:(CGFloat)scale;
YYLabel
//YYLable 是继承于 UIView的类,用法与 Label 用法,属性无差别.
//设置文字阴影,设置的同时`attributedText`属性也被设置
@property (nullable, nonatomic, strong) UIColor *shadowColor;
//设置阴影的size 属性,设置的同时`attributedText`属性也被设置
@property (nonatomic) CGSize shadowOffset;
//阴影半径
@property (nonatomic) CGFloat shadowBlurRadius;
//文字垂直方向,枚举设置,三个方向
@property (nonatomic) YYTextVerticalAlignment textVerticalAlignment;
...还有一些属性是关于:`YYTextParser`,`YYTextLayout`,`YYTextLinePositionModifier`,`YYTextDebugOption`,它们本身是一个类,又当做 YYLabel 的属性,属于高级用法,自行了解...
//文字的点击事件
@property (nullable, nonatomic, copy) YYTextAction textTapAction;
YYTextView
//YYTextView 的代理,属性与系统的用法一样.
//如果文字中有网址链接,设置链接样式,默认为 None 点击事件由代理实现
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes;
//当“dataDetectorTypes”检测到一系列文本时,该值将是
用于修改范围内的原始属性
@property (nullable, nonatomic, copy) NSDictionary<NSString *, id> *linkTextAttributes;
//设置文字的富文本属性,更多设置看`NSAttributedString+YYText`
@property (nullable, nonatomic, copy) NSAttributedString *attributedText;
//可以查询 layout 一些信息,只读
@property (nullable, nonatomic, strong, readonly) YYTextLayout *textLayout;
//类似于 UITextFile 属性,当没有文字输入时,显示
@property (nullable, nonatomic, copy) NSString *placeholderText;
...还有一个颜色, font placeholder 富文本属性...
//text 的 inset 属性
@property (nonatomic) UIEdgeInsets textContainerInset;
//用户是否可以对内容进行选择
@property (nonatomic, getter=isSelectable) BOOL selectable;
//对内容是否可以编辑
@property (nonatomic, getter=isEditable) BOOL editable;
//是否允许用户将图片粘贴复制到文本框,默认为 NO
@property (nonatomic) BOOL allowsPasteImage;
//是否允许将其他富文本属性粘贴至文本框,默认为 NO
@property (nonatomic) BOOL allowsPasteAttributedString;
//是否允许将文本框中的富文本字符串进行拷贝,默认为 YES
@property (nonatomic) BOOL allowsCopyAttributedString;
//文本框是否有,撤销,等状态,默认为 YES
@property (nonatomic) BOOL allowsUndoAndRedo;
YYTimer
//在指定时间开启定时器
- (instancetype)initWithFireTime:(NSTimeInterval)start
interval:(NSTimeInterval)interval
target:(id)target
selector:(SEL)selector
repeats:(BOOL)repeats NS_DESIGNATED_INITIALIZER;