2016-02-19 2 views
1

таймер внутри метода инициализации, вызывающий себя дважды после своего интервала 10 секунд. Кто-нибудь, пожалуйста, скажите мне, как остановить это? Заранее спасибо.NSTimer вызывал дважды

- (id)init { 
    if (self = [super init]) { 
    timer=[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(serviceCalling) userInfo:nil repeats:YES]; 

    //[timer fire]; 

    //NSDefaultRunLoopMode 
    //[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 
    } 
    return self; 
} 

-(void)serviceCalling{ 
    NSLog(@"Inside"); 
} 
+0

Если вы спросите таймер остановки [таймер недействителен], он должен работать, если это не объясняет, что вам нужно. –

+0

Откуда вы вызываете метод init? Это происходит в основном потоке? –

+0

@grhnkdlk Я хочу, чтобы он запускался только один раз после 10 секундного интервала, так как в настоящее время он запускается сразу два раза после его интервала, – Garry

ответ

2

Вы строите этот объект более одного раза? Учитывая код, который вы опубликовали, это единственное объяснение (если вы не путаете повторение через 10 секунд).

Поместите NSLog в init.

+0

Как бы вы построили объект более одного раза? – trojanfoe

+0

, вызывающий '[[YourClass alloc] init]' несколько раз. Вы установили NSLog в init? Вы должны получить один вызов serviceCalling каждые 10 секунд для каждого вызова init. –

+0

@LouFranco init - это конструктор одноэлементного класса, + (id) sharedManager {static NotificationObserver * sharedMyManager = nil; static dispatch_once_t onceToken; dispatch_once (& onceToken,^{sharedMyManager = [[self alloc] init];}); return sharedMyManager; } – Garry

Смежные вопросы