我有一个单例类,我想在后台运行并检查要上传的照片。单身人士从另一个视图控制器通过初始化NSTimer没有从Singleton类发射
[[EXOImageUploader sharedPhotoUploader] startPhotoUploadCheck];
如果我NSLog的一切,它似乎单身正在工作。我可以在下面没有显示的单身人士中做其他事情。 NSTimer
只是永远不会开火。我甚至评论了检查计时器isValid
但不起作用的线路。
任何想法为什么我的计时器工作?
这里是NSLog的吐出顺序。
- sharedPhotoUploader初始化
- doSetup
- 定时器间隔:1.000000
- sharedPhotoUploader单
- startPhotoUploadCheck
下面是代码。
.H
@interface EXOImageUploader : NSObject
@property (assign) NSTimeInterval timerCheckInterval;
+ (EXOImageUploader *) sharedPhotoUploader;
- (void) startPhotoUploadCheck;
- (void) stopPhotoUploadCheck;
.M
@interface EXOImageUploader()
@property (nonatomic, strong) NSTimer* timerUpload;
@end
@implementation EXOImageUploader
static EXOImageUploader* _sharedPhotoUploader;
#pragma mark - SINGLETON SETUP
+ (EXOImageUploader *) sharedPhotoUploader {
static EXOImageUploader *sharedPhotoUploader = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedPhotoUploader = [[self alloc] init];
NSLog(@"sharedPhotoUploader singleton");
});
return sharedPhotoUploader;
}
- (id) init {
if (self = [super init]){
NSLog(@"sharedPhotoUploader init");
[self doSetup];
}
return self;
}
- (void) doSetup {
NSLog(@"doSetup");
if (!self.timerCheckInterval) {
self.timerCheckInterval = 1.0f;
}
NSLog(@"Timer interval: %f", self.timerCheckInterval);
}
#pragma mark Public Methods
- (void) startPhotoUploadCheck {
NSLog(@"startPhotoUploadCheck");
//Don't start a new one if this one is running
if (!_timerUpload) {
_timerUpload = [NSTimer timerWithTimeInterval:_timerCheckInterval target:self selector:@selector(checkForPhotosToUpload) userInfo:nil repeats:YES];
}
}
- (void) stopPhotoUploadCheck {
NSLog(@"stopPhotoUploadCheck");
[_timerUpload invalidate];
_timerUpload = nil;
}
如果timerUpload是零,它不通过if块,所以你的计时器将永远保持零。您是否尝试将计时器声明为属性? –
我做到了。请参阅修订后的问题。 –
尝试给予float而不是NSTimeInterval。 –