当我尝试旋转它多次时,我的应用程序崩溃了。我首先想到的只是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
,视图是UIScrollView
。
答案 0 :(得分:4)
你不应该发布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
。