2011-02-10 9 views
0

なぜ私のコードがクラッシュするのですか?NSTimerクラッシュアプ​​リケーション

NSTimeInterval timeleftに= [NSDate timeIntervalSinceDate: [[NSUserDefaults standardUserDefaults] objectForKey:@ "lastDate"]] [[[タイマーのUserInfo] objectForKey: "theLabel"] @ テキスト:[NSStringのstringWithFormat:@ "残り時間:%d"、waitTime]]; //ラベルのテキストを設定する

変数に問題はないことを確認できます。 userInfoは、NSTimerを介して渡される辞書です。

ありがとうございます!

+2

コードをフォーマットしてください。ほとんど読むことができず、セミコロンと括弧がありません。 –

+2

クラッシュログ、タイマーを設定するコード、およびさまざまなオブジェクト参照の格納方法に関する情報もありません。インスタンス変数?グローバル? Localst? – bbum

+0

これはおそらくあなたがしようとしていることです(すべての変数が存在し、想定どおりにセットアップされていると仮定しています):[[timer userInfo] setValue:[NSString stringWithFormat:@ "Time Remaining:%d"、waitTime] forKey: "theLabel"]; ' – Rog

答えて

2

あなたは正確にあなたのコードを貼り付けてきたと仮定すると、このコード行は間違いなく例外がスローされます:

[[[timer userInfo] objectForKey:@"theLabel"] text:[NSString stringWithFormat:@"Time Remaining: %d", waitTime]]; 

あなたはおそらくUILabelであるいくつかのオブジェクト、上のメソッドを呼び出す-text:しようとしています。しかし、そのような方法はありません。コンパイラは、-text:と呼ばれるセレクタがないことを警告する必要があります。代わりに、ほとんど確実に-setText:が必要です。

waitTimeという変数も参照していますが、前の行ではtimeLeftという名前の変数が作成されています。あなたが実際にtimeLeftを参照することを意味していると仮定すると、ここに別の問題があります。timeLeftはダブルですが、整数として印刷しています。整数の秒数が必要な場合は、フォーマットトークン%.0fを作成し、引数をroundf(timeLeft)にしてください。