尝试多次旋转时,我的应用程序崩溃了。我最初以为这只是iPhone模拟器,所以我将应用程序加载到iPod touch上,并且连续旋转较少后便崩溃了。我怀疑这是我的一种旋转方法中的内存泄漏。我可以认为导致崩溃的唯一地方是willRotateToInterfaceOrientation:duration:
。我添加/扩展的与旋转相关的仅有的两种方法是shouldAutorotateToInterfaceOrientation:
和willRotateToInterfaceOrientation:duration
,我不认为这是第一种,因为它仅包含两个词:return YES;
。这是我的willRotateToInterfaceOrientation:duration:
方法,因此您可以对其进行检查并查看可能的内存泄漏在哪里。
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
{
UIFont *theFont;
if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight))
{
theFont = [yearByYear.font fontWithSize:16.0];
yearByYear.font = theFont;
[theview setContentSize:CGSizeMake(460.0f, 635.0f)];
}
else
{
theFont = [yearByYear.font fontWithSize:10.0];
yearByYear.font = theFont;
[theview setContentSize:CGSizeMake(300.0f, 460.0f)];
}
[theFont release];
}
yearByYear是一个
UITextView
,而view是一个UIScrollView
。
最佳答案
您不应该发布theFont
。您不拥有该对象。
您还可以简化操作:
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration {
if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight)) {
yearByYear.font = [yearByYear.font fontWithSize:16.0]
[theview setContentSize:CGSizeMake(460.0f, 635.0f)];
}
else
{
yearByYear.font = [yearByYear.font fontWithSize:10.0]
[theview setContentSize:CGSizeMake(300.0f, 460.0f)];
}
}
完全摆脱
theFont
。
关于iphone - 多次旋转后我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843618/