質問

UiAccelerメーターの実装に少し奇妙な問題に直面しています。 uaitbiewcontrollerを使用してuiaccecelerメーターを使用したくないが、uiviewcontroller内でアクティブにしたい行を押した後、シミュレーターを使用するときはすべて問題ありませんが、デバイスiphone 3gを使用してテストすると、exc_bad_accessを取得しました。返されるボタンを押すことにより。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


     ShakeControl *percView = [[ShakeControl alloc] init];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:percView animated:YES];
     [percView release];


}

percview release];を無効にすると正常に動作しますが、解決策のようには聞こえません。どんなアイデアも感謝しています。

シェイクコントロールの実装:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / kUpdateFrequency];
    [[UIAccelerometer sharedAccelerometer] setDelegate:self];

}

- (void)viewDidUnload {
    [super viewDidUnload];

    [[UIAccelerometer sharedAccelerometer] setDelegate:nil];
}

どうも

役に立ちましたか?

解決

viewDidUnload メソッドは、メモリ警告など、特定の場合にのみ呼び出されます。デリゲートを削除する必要があります dealloc それも。

他のヒント

却下した後にリリースしてみてください。PushViewControllerが保持されるかどうかはわかりません。

環境変数を設定しますnszombiesEnabled&nsautoreleaeasefreedobjeckeckeckEnabled 1の値は1です。これにより、オブジェクトが実際に扱われなくなり、過剰リリースがどこから来ているかを示すコンソールログを取得する必要があります。

どのオブジェクトが過剰にリリースされているかがわかったら、パフォーマンスツールを使用してRunを使用でき、不均衡を見つけるために保持/リリースが呼び出されたすべての場所を確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top