我无法想象问题到底是什么。 我做了一个漂亮的应用程序,并决定只使用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。
答案 0 :(得分:0)
如果你在调试器(Command-Y)中运行并确保你有global breakpoints enabled,调试器应该停在发生崩溃的地方,让你知道什么是零或过度释放。< / p>
答案 1 :(得分:0)
也许我的问题可以帮到你:
我开始使用在单击另一个视图时打开的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,你应该将值复制到另一个视图。