UIA加速度计EXC

UIAccelerometer的实现我面临一个奇怪的问题。 我有一个UITableViewController,我不想使用UIAccelerometer,但在按下行之后,我想在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发布]时,它工作正常,但它听起来不像解决方案。 任何想法将不胜感激。

摇控制执行:

- (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&NSAutoreleaseFreedObjectCheckEnabled的值为1.这将防止对象真正被释放,那么你应该得到控制台日志,指出过度释放来自何处。

一旦您知道哪个对象被过度释放,您就可以使用Run With Performance Tools - > Allocations来查看保留/释放被调用以发现不平衡的每个位置。

链接地址: http://www.djcxy.com/p/84415.html

上一篇: UIAccelerometer EXC

下一篇: C programming, Can anyone explain this?