2

我正在创建一个新闻应用程序,其中主要有 2 个 UIViewcontrollers:

  1. 爆炸新闻
  2. 主页

突发新闻显示可用平铺图像和一些描述的最新消息。在主页中,我可以选择我想要的新闻类型,比如体育、政治等。所以每次它都会在主页中显示那种类型的新闻。

我的问题是

当我打开应用程序时,我可以看到突发新闻,然后我单击了一个新闻项目,因此它将以新的形式打开,UIViewController其中包含与该新闻相关的所有图像和描述。

如果我从该描述页面单击下一个标签栏按钮,它将打开主页UIViewController并崩溃。有时我可以看到主页UIViewController,当我打开新闻时,它就崩溃了。

如果我点击后退按钮,那么我将到达突发新闻页面,然后它就不会崩溃。

但是这个问题只出现在 iOS 6.0+ 版本中。我尝试在 iOS 5.1 设备上运行相同的应用程序,它工作正常。

崩溃日志

 -[DescriptionPageViewController respondsToSelector:]: message sent to deallocated instance 0x1f59a370`

在此处输入图像描述 在此处输入图像描述

刚刚更新 我尝试再次在 ipad 6.1 模拟器中使用断点运行相同的用例,但它在那里工作正常并且在没有断点设备的情况下崩溃*** 为什么????

Appdelegate 代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"everLaunched"]==YES) {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"everLaunched"];
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
        [[NSUserDefaults standardUserDefaults] synchronize];



            [self loadingControllers];
                    }


    return YES;

}
-(void)loadingControllers{


    BreakingNewsViewController *breaking = [[BreakingNewsViewController alloc] initWithNibName:@"BreakingNewsViewController" bundle:nil];
    UIViewController *home = [[homepage alloc] initWithNibName:@"homepage" bundle:nil];



    UINavigationController*viewController1 = [[UINavigationController alloc] initWithRootViewController:breaking];
    UINavigationController *viewController2 = [[UINavigationController alloc] initWithRootViewController:home];


    viewController1.navigationBarHidden = YES;
    viewController2.navigationBarHidden = YES;


    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.tabBar.backgroundImage = [UIImage imageNamed:@"Tabbar_bg.png"];
    // self.tabBarController.tabBar.tintColor=[UIColor darkGrayColor];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1,
                                             viewController2
                                            ,nil];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    [self.tabBarController setDelegate:self];




}
4

1 回答 1

5

您正在DescriptionPageViewController内部分配/初始化BreakingNewsViewController.

请为DescriptionPageViewController具有强属性的对象创建属性。

 // In BreakingNewsViewController.h

@property (strong, nonatomic) DescriptionPageViewController *descriptionPageViewController;

 // In BreakingNewsViewController.m

self.descriptionPageViewController = [[DescriptionPageViewController alloc]initWithNibName:@"DescriptionPageViewController "];
于 2013-09-05T04:47:23.570 回答