diff --git a/ZYBannerView/ZYBannerView.m b/ZYBannerView/ZYBannerView.m index f5ceddd..eb6ed53 100644 --- a/ZYBannerView/ZYBannerView.m +++ b/ZYBannerView/ZYBannerView.m @@ -7,6 +7,57 @@ #import "ZYBannerView.h" #import "ZYBannerCell.h" +#import + +#define iOS10 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) + +@interface ZYWeakTimerTarget : NSObject + +@property (nonatomic,weak) id target; +@property (nonatomic,assign) SEL selector; + ++ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval target:(id)target selector:(nonnull SEL)sel; +@end + +@implementation ZYWeakTimerTarget +- (instancetype)initWithTarget:(id)target selector:(SEL)sel { + self = [super init]; + if (self) { + self.target = target; + self.selector = sel; + } + return self; +} + +- (void)timerDidFire:(NSTimer *)timer { + if(self.target) + { + [self.target performSelector:self.selector withObject:timer]; + } + else + { + [timer invalidate]; + } +} + ++ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval target:(id)target selector:(SEL)sel { + NSTimer * timer; + + if (iOS10) { + __weak id weakTarget = target; + timer = [NSTimer scheduledTimerWithTimeInterval:interval repeats:YES block:^(NSTimer* t) { + id _Nullable strongTarget = weakTarget; + [strongTarget performSelector:sel]; + }]; + }else { + ZYWeakTimerTarget * weakTarget = [[self alloc]initWithTarget:target selector:sel]; + timer = [NSTimer scheduledTimerWithTimeInterval:interval target:weakTarget selector:@selector(timerDidFire:) userInfo:nil repeats:YES]; + } + + return timer; +} + +@end // 总共的item数 #define ZY_TOTAL_ITEMS (self.itemCount * 10000) @@ -23,7 +74,7 @@ @interface ZYBannerView ()