我有一個單例類,我想在後臺運行並檢查要上傳的照片。單身人士從另一個視圖控制器通過初始化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。 –