Как вы выпускаете общий экземпляр ускорителя на iPhone? - PullRequest
1 голос
/ 11 апреля 2009

Я создал переменную акселерометра:

UIAccelerometer   *objAccelerometer;

, который я ассоциирую с экземпляром sharedAccelerometer:

objAccelerometer = [UIAccelerometer sharedAccelerometer];
objAccelerometer.delegate = self;

Когда я освобождаю это представление (чтобы загрузить другое представление), экземпляр акселерометра приводит к смерти программы. (Если я это закомментировал, я могу без проблем переключаться между представлениями).

У меня была похожая проблема с NSTimer, но однажды я позвонил:

[myTimer invalidate];

(до выпуска и переключения видов) все работало нормально.

Как правильно освободить делегата, освободить или разблокировать акселерометр?

1 Ответ

6 голосов
/ 11 апреля 2009

Вы не отпускаете общий акселерометр - вы никогда не сохраняли его (и не должны сохранять) - это одиночка.

Акселерометр имеет ссылку на ваш объект. Чтобы освободить его, просто установите для его свойства делегата значение nil (так как это свойство, оно выпустит ссылку на ваш объект).

...