基於dispatch after封裝YXTimer

2021-09-06 18:29:59 字數 2916 閱讀 8857

基於dispatch_after封裝yxtimer

本人根據dispatch_after封裝了乙個定時器,支援block以及**的方式來啟用定時器,適用於對精度要求低,耗時短的地方,高階大氣上檔次,低調奢華有內涵:)

原始碼:yxtimer.h 與 yxtimer.m

//

//yxtimer

////

created by youxianming on 14-10-2.

////

#import

@class

yxtimer;

@protocol yxtimerdelegete - (void)yxtimerevent:(yxtimer *)timer;

@end

@inte***ce

yxtimer : nsobject

//**相關方法

@property (nonatomic) nstimeinterval millisecond; //

毫秒@property (nonatomic, assign) id

delegate;//

block相關方法

+(instancetype)timerwithmillisecondinterval:(nstimeinterval)millisecond

block:(

void (^)(yxtimer *timer))block;

//啟用定時器 + 停止定時器

- (void

)start;

- (void)stop; //

注意:要想讓timer能被移除,一定要啟用stop方法才行

@end

//

//yxtimer

////

created by youxianming on 14-10-2.

////

#ifdef

debug

#define yxtimer_dlog(fmt, ...) nslog((@"yxtimer.m:%s:%d" fmt), __pretty_function__, __line__, ##__va_args__);

#else

#define yxtimer_dlog(...)

#endif

#import

"yxtimer.h

"@inte***ce

yxtimer ()

@property (nonatomic) bool isrunning;

@property (nonatomic, copy)

void (^block)(yxtimer *timer);

@end

@implementation

yxtimer

-(instancetype)init

return

self;

}- (instancetype)initwithblock:(void (^)(yxtimer *timer))block

return

self;

}- (void

)start

- (void

)stop

+(instancetype)timerwithmillisecondinterval:(nstimeinterval)millisecond

block:(

void (^)(yxtimer *timer))block

- (void

)runtimer

dispatch_after(dispatch_time(dispatch_time_now, (int64_t)(millisecond * nsec_per_msec)), dispatch_get_main_queue(), ^

if(_delegate)

[self runtimer];

});}

}- (void

)dealloc

@end

使用原始碼:

//

//yxtimer

////

created by youxianming on 14-10-2.

////

#import

"viewcontroller.h

"#import

"yxtimer.h

"@inte***ce viewcontroller ()@property (nonatomic, strong) yxtimer *timer;

@property (nonatomic, strong) uilabel *label;

@property (nonatomic, strong) nsarray *dataarray;

@property (nonatomic) nsinteger count;

@end

@implementation

viewcontroller

- (void

)viewdidload

- (void)yxtimerevent:(yxtimer *)timer

@end

需要注意的地方:

AspectJ基於xml和基於註解

一 基於xml 執行的切入點中具體方法有返回值,則方法結束會立即執行後置通知,然後再執行環繞通知的放行之後的 2 連線點即所有可能的方法,切入點是正真被切的方法,連線點方法名 其中,只有環繞通知的切入點引數不一樣,是可以放行的切入點 3 異常通知是處理異常 切面類中的異常通知的方法引數列表中異常引數...

拓撲排序(基於dfs 基於佇列)

dfs函式的返回值表示是否成環,若存在有向環,則不存在拓撲排序。不包含有向環的有向圖稱為有向無環圖 dag 可以借助dfs完成拓撲排序,在訪問完乙個結點時把他加入當前拓撲序的首部。舉個栗子 比如乙個 1,2 1,3 2,3 的有向無環圖,就先搜尋1,再遞迴搜尋2,再搜尋3,3沒有出度了,於是放進拓撲...

基於insert update delete的注入

inset注入原理 所謂inset注入就是指我們前端註冊的資訊會被後台通過insert操作插入到資料庫裡邊去,若此時後台沒有做出相應的處理就會構成insert注入。insert注入方法 insert用法例如 insert into member username,pw,phonenum,email,...