-1
我的計時器沒有反覆運行。我對iOS的編碼還不熟悉,但是從我在本網站上收集的內容以及對其他問題的回答中,它應該可以工作。基本上,定時器應該在timerStart按鈕被按下時開始更新,並且當按下timerStop按鈕時它應該停止。NSTimers沒有重複運行
繼承人的示例代碼 .h文件中
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface PGSecondViewController : UIViewController <CLLocationManagerDelegate>
{
NSTimer *Timer;
IBOutlet UILabel *displayTimer;
int ticks;
}
@property (nonatomic, retain) IBOutlet UILabel *displayTimer;
-(IBAction)timerStart:(id)sender;
-(IBAction)timerStop:(id)sender;
-(void)updateTimer:(NSTimer *)theTimer;
@end
和繼承人的.m文件
#import "PGSecondViewController.h"
@interface PGSecondViewController()
@end
@implementation PGSecondViewController
@synthesize displayTimer;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UITabBarItem *tbi = [self tabBarItem];
[tbi setTitle:@"Start"];
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[displayTimer setText:@"00:00:00"];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)timerStart:(id)sender;
{
Timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
}
-(IBAction)timerStop:(id)sender;
{
[Timer invalidate];
Timer = nil;
}
-(void)updateTimer:(NSTimer *)theTimer
{
if (ticks == nil)
{
ticks = 0;
}
else
{
ticks = ticks + 1;
}
[displayTimer setText:[NSString stringWithFormat:@" %d ", ticks]];
}
@end
基本上我得到的是一旦啓動定時器和NSLabel顯示爲0,但沒有任何反應後, 。我已經在調度計時器後用[[NSRunLoop currentRunLoop] addTimer:Timer forMode:NSDefaultRunLoopMode]和[[NSRunLoop currentRunLoop]運行]嘗試過,但它沒有幫助。
任何想法??
但理論上,ticks = nil總是假的,所以tics應該增加。 –
Nope - (0 == nil)的計算結果爲true。與零比較的非零整數評估爲false。所以,這就是爲什麼蜱總是零。 –
大多數人不會做這個東西,壽。另外,你不應該忽略編譯器警告。 (在你的情況下,你會說你正在比較一個指針和一個整數,當你解決這個問題時,你的問題很可能會消失)... fwiw –