0

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

当我看到位置属性的变化被动画化时,决定实现一个名为 tanCenter 的自定义 getter-setter“抽象”属性来设置位置而不设置动​​画。

-(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; }

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

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

4

2 回答 2

0

如果您在调试器中运行 (Command-Y) 并确保启用了全局断点,则调试器应该在崩溃发生的地方停止,让您了解什么是 nil 或过度释放。

于 2010-01-19T05:55:16.180 回答
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,您应该将值复制到另一个视图。

于 2010-01-21T13:55:20.157 回答