我的应用程序在多次旋转后崩溃

时间:2010-05-16 12:00:32

标签: iphone objective-c crash autorotate memory-leaks

当我尝试旋转它多次时,我的应用程序崩溃了。我首先想到的只是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

1 个答案:

答案 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