我在实现UIACCELERMOMETER时面临着一些奇怪的问题。我有一个uitaiteViewController,我不想使用UIACCELEREMETER,但是在按下行之后,我想在UiviewController中激活一个,当我使用Simulator时,一切都很好,但是当我使用设备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&nsautoreleasefreedobjectCheckeCnabled,值为1。这将阻止对象真正被划分,然后您应该获得控制台日志,以指示过度释放的位置。

您可以将运行与性能工具一起使用 - >分配后,一旦知道哪个对象被过度发行,并查看每个位置都要求保留/释放以发现不平衡。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top