2

主に2つのUIViewcontrollersがあるという点でニュースアプリを作成しています:

  1. ニュース速報
  2. ホームページ

ニュース速報では、最新のニュースがタイル イメージと説明とともに表示されます。また、ホームページでは、スポーツ、政治など、必要なニュースの種類を選択できます。そのため、毎回その種類のニュースがホームページ内に表示されます。

私の問題は

アプリを開くと、ニュース速報が表示されます。1 つのニュース項目をクリックすると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 に答える