2014-10-03 25 views
1

好了,所以基本上,我試圖建立一些代碼,允許一個NSNumber由每分鐘1至減少,減少的NSNumber本身-1,自動

這是我到目前爲止所。

- (void)viewDidLoad { 
[super viewDidLoad]; 
NSNumber *numVar = [NSNumber numberWithUnsignedChar:99]; 
[self num]; 
} 
-(void)num{ 
usleep(60000000); 
NSNumber *numVar = [NSNumber numberWithUnsignedChar:numVar-1]; 
[self num]; 
} 

首先,它不會被一個減少每分鐘,其次是錯誤的有viewDidLoad初始numVar

回答

2

我們嘗試這樣做,它工作得很好,因爲我們需要的東西: 你需要在你的代碼重新安排這雖然

- (void)viewDidLoad{ 
    NSTimer *timer; 
    int minutes = 0; 

    //Creating a label that shows the timer ; i assume you have one that is already linked 
    _labelTimer.text = [NSString stringWithFormat:@"This is %i minute", minutes]; 

    //Creating the timer itself with the NSTimer object 
    timer = [NSTimer scheduledTimerWithTimeInterval: 60.0 target: self selector:@selector(decreaseTimeCount) userInfo:nil repeats:YES]; 

    //Note that 60 is the number of seconds before it calls the selector. You can use 1 if you want it to change your timer/clock every second 
} 
- (void)decreaseTimeCount{ 

    //The method changes the value of my variable and updates the label. If i'm at the 10th minute, i could do something, like perform a segue. 

    minute+=1; 
    _labTimer.text = [NSString stringWithFormat:@"This is %i minutes", minutes]; 

    if (minutes == 10){ 
     //do stuff 
    } 

} 
1

你在主線程內睡眠,阻塞你的UI。您需要使用NSTimer或類似的計時機制來定期運行該功能而不會阻塞。

0
@implementation YourViewController 
{ 
    NSNumber *numVar; 
}  

- (void)viewDidLoad 
{ 
    [super viewDidLoad];  
    numVar = [NSNumber numberWithUnsignedChar:99]; 
    [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; 
} 

- (void)timerFireMethod:(NSTimer *)timer 
{ 
    numVar = [NSNumber numberWithInt:[numVar intValue] - 1]; 
} 
0

每當我需要的東西快,我不喜歡這樣

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self performSelector:@selector(num) withObject:nil afterDelay:60]; 
} 

- (void)num 
{ 
    NSNumber *numVar = [NSNumber numberWithUnsignedChar:numVar-1]; 
    [self performSelector:@selector(num) withObject:nil afterDelay:60]; 
} 

你可以在num函數中決定是否希望在一分鐘後再次執行它。