私はプログラミングを勉強しています。しかし、私はUIAccelerometerの問題があります。UIAccelerometerオブジェクトはどのように保つことができますか?
ここにコードがあります。
- (void)viewDidLoad {
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = kUpdateInterval;
[super viewDidLoad];
}
- (void)accelerometer:(UIAccelerometer *)accelerometer
didAccelerate:(UIAcceleration *)acceleration {
[(BallView *)self.view setAcceleration:acceleration];
[(BallView *)self.view draw];
}
最初の質問は、私はsharedAccelerometer
であり、それはシステムの共有オブジェクトを返すメソッドを使用する、のviewDidLoadです。
viewDidLoadが終了したとき、ローカル変数、加速度計は消えませんか?
私は加速度計オブジェクトを取得すると、それがなくなったと思います。
viewDidLoadが終了しているため、インスタンス変数がありません。
これはローカル変数です。
秒は委任方法です。
私は、accelerator.deleate = selfをviewDidLoadで言うとします。
しかし、私は、加速度計について、インスタンス変数を持っていない、のviewDidLoadが終了したとき、そのメソッドが呼び出され、どのように?そう
私はUIAccelerometerオブジェクトをどのように保つことができるのか分かりません。
私を助けてください。
答えていただきありがとうございます。しかし、私はまだ理解していません。そして、それはシングルトンです。しかし、私はsharedAcceleometerと言うと、それはシングルトンによって作られたオブジェクトだと思います。しかし、私はそれを使用したいとき、私はオブジェクトを指す必要があると思う。なぜなら、viewDidLoadが終了すると、オブジェクトはまだ存在していますが、私はポインタを失ってしまい、使用できません。私が間違っている? – MoonSoo
あなたはポインタを失っていますが、 '[UIAccelerometer sharedAccelerometer]'をもう一度呼び出すと、同じポインタが得られます。 – jtbandes
最後のご質問ありがとうございます。私はdeallocでそのオブジェクトを解放する必要はありませんか?デリゲートメソッド、2つの引数、1つは加速度計、もう1つは加速です。このコードの第2引数では、加速度はBallViewクラスで解放されます。しかし、最初のことは、加速度計は決してリリースされていない、それは正しいですか?または私はdeallocでそれを解放する必要がありますか? – MoonSoo