2011-08-04 17 views
1

タイマーを停止しようとしています。私の問題は、タイマーを停止しようとすると、タイマーの値がゼロで無効になっていないということです。もしこれ以外のタイマーを止める方法があれば?NSTimerが停止していない

私のコードは

のように、ヘッダファイルに定義され、また合成されます。

if([str_Message isEqualToString:ON] // if the command to start timer 

{ 


if(!timer) 

{ 

tmr_CallWebService = [[NSTimer scheduledTimerWithTimeInterval:Time_TracingInterval target:ClassTracing selector:@selector(startLocationTracing) userInfo:nil repeats:YES]retain]; 

} 

//to stop timer 

else if([str_Message isEqualToString:OFF]) 
{ 
if(timer) 

{ 

[timer invalidate]; 
timer = nil; 

} 

事前

+0

ここで、タイマーを設定しますか?それは保持されていますか? – progrmr

+0

@progrmr書き込むのを忘れてしまった。私は自分のコードを編集したばかりだ。 –

+0

あなたのタイマーはどこで始まりますか? 'tmr_CallWebService'の名前を' timer'に変更したいだけかもしれません。 –

答えて

2

[str_Message isEqualToString:ON]におけるおかげでこの[str_Message isEqualToString:@"ON"]ようにする必要があります...私を助けてください。 OFFとの比較も同様です。 @"OFF"を使用してください。

+0

条件が真実になっているので、それは問題ではありませんが、タイマーの値がnilであることが問題です。オフコマンドが受信されたとき –

+0

「ON」が「NSString * ON = @」として宣言されている場合、同様に、この部分に問題はありません。 – progrmr

+0

@iPhone Fun: 'OFF'と' ON'は定数として定義されていますか? –

2

タイマー用に宣言されたプロパティがある場合は、それを使用する必要があります。たとえば、タイマーが@property (nonatomic, retain) NSTimer *myTimer;と定義されている場合は、self.myTimerとして参照し、そのセッターを使用して設定し、後でアクセサーを使用して無効にする必要があります。

tmr_CallWebServiceをタイマーivarに設定していないようですので、どこにいてもリファレンスが漏れているだけです。

5

tmr_CallWebServicetimerに置き換えてください。

関連する問題