gpt4 book ai didi

ios - NSTimer 没有从 Singleton 类触发

转载 作者:行者123 更新时间:2023-11-29 00:47:33 24 4
gpt4 key购买 nike

我有一个单例类,我想在后台运行并检查要上传的照片。单例是通过另一个 View Controller 初始化的

[[EXOImageUploader sharedPhotoUploader] startPhotoUploadCheck];

如果我对所有内容进行 NSLog,则表明单例正在工作。我可以在单例中做其他没有在下面显示的事情。 NSTimer 只是永远不会触发。我什至注释掉了检查计时器是否有效的行,但这也不起作用。

知道我的计时器为何正常工作吗?

这是 NSLog 吐出的顺序。

  1. sharedPhotoUploader 初始化
  2. 执行设置
  3. 计时器间隔:1.000000
  4. sharedPhotoUploader 单例
  5. 开始照片上传检查

这是代码。

.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;
}

最佳答案

使用 scheduledTimerWithTimeInterval 而不是 timerWithTimeInterval

timerWithTimeInterval 的文档说:“您必须使用 addTimer:forMode: 将新计时器添加到运行循环中。”

对于“预定”版本,这已经为您完成了。

关于ios - NSTimer 没有从 Singleton 类触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com