1

インスタンスを他のクラスに初期化して別のクラスのIBOutletを取得し、IBOutletsへの参照を使用して別のアプリにメモリアドレスを設定するコードを実行するメソッドがあります。コードは正常に実行されますが、5秒ごとに更新するように設定したタイマーによって定期的に更新されます。問題は、5秒ごとにメモリアドレスが定期的に間違った値に変更されてから、正しい値に戻されることです。これが私の重要なコードです:

#define OFF 0
#define ON 1
- (void)onOff:(id)sender {
    if ([[appDelegate buttonOutletName] state] == ON) {
        [helper setIntForAddress:0xFFFFFF value:1];
    }
    if ([[appDelegate buttonOutletName] state] == OFF) {
        [helper setIntForAddress:0xFFFFFF value:0];
    }
}

問題は、ボタンを押す以外の方法でこのコードを呼び出すと(例:[self onOff:self];)、値が一時的に0に設定されてから1に戻ることです。アプリケーションコントローラー内に実装すると、コードは正常に機能しました。 ; ただし、現在は機能しますが、このエラーが発生します。誰かが私を助けることができればそれは大いにありがたいです。ありがとう。

4

2 に答える 2

0

このメソッドはどういうわけか2回呼び出されていると思います。一度だけ呼んでよろしいですか?Instrumentsアプリで、実際に2回呼び出されているかどうかを確認してください。

于 2011-09-23T05:48:00.097 に答える
0

setIntForAddress:value:メソッドが[appDelegatebuttonOutletName]state]の値を変更しているように感じます。その場合は、2つのifステートメントを1つのif-elseブロックに変換するだけです。

if ([[appDelegate buttonOutletName] state] == ON) {
    [helper setIntForAddress:0xFFFFFF value:1];
} else if ([[appDelegate buttonOutletName] state] == OFF) {
    [helper setIntForAddress:0xFFFFFF value:0];
}
于 2011-09-23T06:02:49.673 に答える