2010-12-10 88 views
0

這裏是一個noob的位。使用NSTimer關閉應用程序

我正在開發一個播放一些循環聲音的應用程序。我想讓用戶能夠在一段時間後使用定時器關閉應用程序。這個想法是用戶按下按鈕,一旦定時器耗盡,應用程序將關閉。

目前,如果按下按鈕,應用程序崩潰。

這是我走到這一步:

- (IBAction)timer:(id)sender{ 

    timer = [NSTimer scheduledTimerWithInterval: 10.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; 

} 


-(void) targetMethod: (NSTimer*) theTimer { 
    NSLog(@"timer?"); 
    exit(0); 

} 
+0

你的代碼看起來合理,假設定時器是保留財產我猜?接下來要做的是在[timer scheduledTimer ...]調用之前和之後放置NSLog消息,並在targetMethod中另一個NSLog: – MahatmaManic 2010-12-10 19:31:41

+0

另一個需要注意的地方是確保當您在頭中聲明IBAction時您聲明它與在.m - (IBAction)計時器中聲明它的方式相同:(id)發件人,並且它在xib中正確連線。如果你看到像「無法識別的選擇器」這樣的崩潰事件,並且/或者你沒有看到這些日誌消息被觸發,那麼你沒有將它連接到正確的位置。 – MahatmaManic 2010-12-10 19:33:22

+2

Apple不會批准任何故意關閉它的應用程序。如果你打算這樣做,不要指望App Store成爲發佈的途徑。 – Tommy 2010-12-10 19:38:38

回答

1

您需要正確地定義你的計時器參考:

NSTimer *timer = [NSTimer scheduledTimerWithInterval: 10.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; 
+0

正如@jsumners所指出的那樣,您在定時器聲明開始時缺少'NSTimer *'。你需要指定類型和它是一個指針。 – 2010-12-10 20:26:29

+0

感謝您的回覆。我可能應該添加我有在頭文件中聲明的定時器,例如:NSTimer * timer;我將檢查代碼以確保所有建議都以thr代碼存在。 – redned 2010-12-11 13:18:19

+0

解決!我有NSTimer *計時器= [NSTimer scheduledTimerWithInterval:10.0目標:自我選擇器:@selector(targetMethod :) userInfo:nil重複:是];而不是NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(targetMethod :) userInfo:nil repeatats:YES];我在時間間隔前忽略了時間。感謝大家的回覆。 – redned 2010-12-11 14:43:51