Heeelp!调试器说“超出范围”!

时间:2010-01-18 22:57:34

标签: iphone debugging scope position calayer

我无法想象问题到底是什么。 我做了一个漂亮的应用程序,并决定只使用CALayers来“渲染”。

当我看到position属性的变化被动画化时,决定实现一个名为tanCenter的自定义getter-setter“abstract”属性来设置没有动画的位置。

-(void) setTanCenter: (CGPoint) sentCenter
{   
    //Remove any transactions.
    [CATransaction begin];
    [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
        //Set position.
        self.position = sentCenter;
    [CATransaction commit];

    //Set value.
    tanCenter = sentCenter;
}
-(CGPoint) tanCenter { return tanCenter; }

由于我将其合并到项目中,因此崩溃时没有任何“可理解的”(对我来说)错误消息。我只能看到那些“超出范围”的东西。我甚至无法在没有崩溃的情况下获得这个tanCenter属性NSLog-ged。

帮帮我,欧比旺克诺比;你是我唯一的希望。

2 个答案:

答案 0 :(得分:0)

如果你在调试器(Command-Y)中运行并确保你有global breakpoints enabled,调试器应该停在发生崩溃的地方,让你知道什么是零或过度释放。< / p>

答案 1 :(得分:0)

嘿,到目前为止,我遇到了同样的问题。最后,我在调查了2周的错误跟踪后发现了我的错误(它真的很糟糕

也许我的问题可以帮到你:

我开始使用在单击另一个视图时打开的TableView。所以我创建了:

-(void)tableView:didSelectRowAtIndexPath:

首先是另一个视图的控制器并设置全局变量的值:

SomeView *dtview = [[SomeView alloc] initWithNibName:@"SomeView" bundle:nil];
dtview.lblTitle = cl.textLabel.text; // cl is the cell
[self presentModalViewController:dtview animated:NO];
[dtview release];

因此打开了另一个视图并完成了大量内存使用的功能:)

当我在那之后关闭另一个视图并返回到表并滚动一些时候,应用终止时出现“超出范围”的消息

我真的很长时间地搜索了,结果是什么。似乎当释放另一个视图时,也会释放第一个表的文本。

将一份副本放入电话后,它对我有用:

dtview.lblTitle = [cl.textLabel.text copy];

对于int和bool,第一个解决方案工作正常,因为这些不是对象,但是对于NSObject,你应该将值复制到另一个视图。