2012-08-31 69 views
1

我試圖讓自己定時器,但它不起作用。它似乎每次重複都會消失,有人呢?它適用於OS X,但不適用於iOS。iOS上的定時器不起作用

我只需要一個工作循環方法 - 有什麼建議嗎?

頁眉:

@interface ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UILabel *timerOutlet; 
- (void)timer:(id)sender; 
@end 

實現:

@synthesize timerOutlet; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    started = TRUE; 
    [self timer:nil]; 
} 

- (void)timer:(id)sender { 
    int test = 1; 
    NSString *number = [NSString stringWithFormat:@"%i",test]; 
    timerOutlet.text = number; 
    [self performSelector:@selector(timer:) withObject:Nil afterDelay:1.0]; 
    test ++;     
} 

回答

3

的問題是,你重新申報test和每一個定時器方法執行時間分配1給它。因此,如果您要麼省略聲明並將test作爲實例變量,要麼將其作爲static,這應該有所幫助。然而,除此之外,你應該使用NSTimer對象而不是強姦框架。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    started = TRUE; 
    test = 1; 
    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timer:) userInfo:nil repeats:YES]; 
} 

- (void)timer:(id)sender { 
    NSLog(@"%i",test); 
    test++; 
} 
+0

+1好答案! –

+0

@Flex_Addicted謝謝:) – 2012-08-31 20:04:18

+0

OMG我怎麼會這麼愚蠢! -。-' 謝謝!!哈哈我只是使用NStimer方法 – Stackie

0

您忘記了「靜態」int test = 1;

static int test = 1; 

你應該很高興。

+0

說明? ;) – 2012-08-31 20:04:34

+0

不要在每個函數啓動時初始化測試變量。所以它只會啓動一次。不是很好的解決方案,但這個計時器的想法並不好......)) – Jlexyc

+0

我知道 - 見我的答案(和聲譽)。我的意思是,你應該將解釋寫入你的答案,以教育發佈該問題的OP: – 2012-08-31 20:08:25