移动到其他应用程序然后向后移动时,应用程序崩溃

时间:2012-05-12 14:13:05

标签: ios memory-management rect

我的应用有问题..
当我使用主页按钮进行多任务处理以移动到另一个应用程序并且当我想再次回到我的应用程序时它崩溃并且我收到消息时崩溃:

*** -[UIView convertRect:toView:]: message sent to deallocated instance 0x81e4020

自从我实施了“内部视图”广告以来,它开始了 我是否需要在代码中执行某些操作才能使其变得无聊? 我试图解决它但没有成功。
这是我的广告代码:

    CGRect frame = CGRectMake(0, 480, 320, 50);
    self.adBanner = [[UIView alloc] initWithFrame:frame];
    [self.view convertRect:adBanner.frame toView:nil];   --->This is a line i tried to put...
    [self.view addSubview:self.adBanner];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdReceived:) name:@"iaAdReceived" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaDefaultAdReceived:) name:@"iaDefaultAdReceived" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdFailed:) name:@"IaAdFailed" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdClicked:) name:@"IaAdClicked" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdWillShow:) name:@"IaAdWillShow" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdDidShow:) name:@"IaAdDidShow" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdWillHide:) name:@"IaAdWillHide" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdDidHide:) name:@"IaAdDidHide" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdWillClose:) name:@"IaAdWillClose" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdDidClose:) name:@"IaAdDidClose" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdWillResize:) name:@"IaAdWillResize" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdDidResize:) name:@"IaAdDidResize" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdWillExpand:) name:@"IaAdWillExpand" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAdDidExpand:) name:@"IaAdDidExpand" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAppShouldSuspend:) name:@"IaAppShouldSuspend" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iaAppShouldResume:) name:@"IaAppShouldResume" object:nil];

    // Display ad
    if (![InneractiveAd DisplayAd:@"iOS_Test" withType:IaAdType_Banner withRoot:self.adBanner withReload:60 withParams:optionalParams])
    {
        [adBanner removeFromSuperview];
    }
}

    -(void) viewWillDisappear:(BOOL)animated
    {
            [super viewWillDisappear:animated];
            [adBanner removeFromSuperview];
    }

- (IBAction)iaAdReceived:(id)sender
   {
       // The ad view has finished loading a paid ad
   }

    - (IBAction)iaDefaultAdReceived:(id)sender
    {
        // The ad view has finished loading a default ad
    }

    - (IBAction)iaAdFailed:(id)sender
    {
        // The ad view has failed to load an ad
    }

    - (IBAction)iaAdClicked:(id)sender
    {
        // The ad has been clicked
    }

    - (IBAction)iaAdWillShow:(id)sender
    {
        // The ad is about to show
    }

    - (IBAction)iaAdDidShow:(id)sender
    {
        // The ad did show
    }

    - (IBAction)iaAdWillHide:(id)sender
    {
        // The ad is about to hide
    }

    - (IBAction)iaAdDidHide:(id)sender
    {
        // The ad did hide
    }

    - (IBAction)iaAdWillClose:(id)sender
    {
        // The ad is about to close
    }

    - (IBAction)iaAdDidClose:(id)sender
    {
        // The ad did close
    }

    - (IBAction)iaAdWillResize:(id)sender
    {
        // The ad is about to resize
    }

    - (IBAction)iaAdDidResize:(id)sender
    {
        // The ad did resize
    }

    - (IBAction)iaAdWillExpand:(id)sender
    {
        // The ad is about to expand
    }

    - (IBAction)iaAdDidExpand:(id)sender
    {
        // The ad did expand
    }

    - (IBAction)iaAppShouldSuspend:(id)sender
    {
        // The app should suspend (for example, when the ad expands)
    }

    - (IBAction)iaAppShouldResume:(id)sender
    {
        // The app should resume (for example, when the ad collapses)
    }

我附上了截图...
它可能是什么? 感谢...

Error

1 个答案:

答案 0 :(得分:0)

你的问题是在跑步时:

[self.view convertRect:adBanner.frame toView:nil];

您的观点不再存在。

你的appDelegate中的

应该使用这个方法:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
/*
 Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
 */
}

无论如何,你试图用这条线做什么?因为它返回了你没有使用的CGRect。