1

仲間のコーダー、

私はすでにAppStoreにあるバージョン1.0のiPhoneアプリを持っているので、そのバージョンではすべてが完璧に機能します。

現在、バージョン2.0のアップデートに取り組んでいます。このバージョンを完全に新しいアプリとしてiPhoneにインストールすると、完全に機能します。アプリの起動や実行時のその他のエラーに問題はありません。

しかし、今問題があります。バージョン1.0を既にインストールしていて、バージョン2.0でアプリを更新しようとすると(Xcodeでビルドしてデバッグモードで実行)、アプリは起動するとすぐにクラッシュします。どちらのバージョンも独立したアプリとして構築されている場合は非常にうまく機能するため、非常に混乱します。もう1つの興味深い側面は、アップデートがiOSシミュレーターで機能するが、デバイスでは機能しないことです。

デバイスで更新を実行すると、次のいずれかのエラーが発生します(エラーは常に同じではありません)。

  • プロセスxxxxのタスクを取得できませんでした
  • アプリの起動を待ってタイムアウトしました

開発環境への追加情報:OS X MountainLion10.8でXcode4.4を使用しています。私のiPhoneのオペレーティングシステムはiOS5.1.1です。

クラッシュはapplication:didFinishLaunchingWithOptions:が呼び出される前に発生することがわかったので、実際のソースコードで問題が発生することはありません。

まだdidFinishLaunchingWithOptions方法に興味がある人のために:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //Navigation bar

    UIImage *navigationBackground = [[UIImage imageNamed:@"EMSNavigationBarBackground.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 20, 0, 20)];
    [[UINavigationBar appearance] setBackgroundImage:navigationBackground forBarMetrics:UIBarMetricsDefault];

    [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-3.f forBarMetrics:UIBarMetricsDefault];

    //Normal button

    UIImage *button30 = [[UIImage imageNamed:@"EMSBarButtonItemNormal"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
    UIImage *buttonHighlighted30 = [[UIImage imageNamed:@"EMSBarButtonItemPressed"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
    [[UIBarButtonItem appearance] setBackgroundImage:button30 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackgroundImage:buttonHighlighted30 forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackgroundVerticalPositionAdjustment:-3.f forBarMetrics:UIBarMetricsDefault];

    //Back button

    UIImage *buttonBack30 = [[UIImage imageNamed:@"EMSBarButtonItemBackNormal"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)];
    UIImage *buttonBackHighlighted30 = [[UIImage imageNamed:@"EMSBarButtonItemBackPressed"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)];

    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack30 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBackHighlighted30 forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackButtonBackgroundVerticalPositionAdjustment:-3.f forBarMetrics:UIBarMetricsDefault];


    return YES;
}
4

2 に答える 2

2

私はまったく同じ問題を抱えていました。問題は、同じアプリの新しいバージョンに別の名前で新しいプロジェクトを作成したという事実であることが判明しました。プロジェクト名を以前のバージョンに戻すと、問題は解決しました。これはあなたのプロジェクトにも当てはまりますか?プロジェクトの名前は次のように編集できます。

  1. 新しいプロジェクトで、ターゲットを選択します
  2. 右側のユーティリティ ペインで、[ファイル インスペクタ] タブを選択します。
  3. ID ペインでプロジェクト名を変更すると、プロジェクトのリファクタリングに役立つ新しいウィンドウが開きます

お役に立てれば!

于 2012-08-24T11:29:29.247 に答える
0

私はやや似たような問題を抱えていました。以前のバージョンがインストールされているときにアプリを初めて実行したとき、「アプリの起動を待ってタイムアウトしました」というエラーが表示されましたが、Xcode が問題なくアプリを起動したのは 2 回目です。その理由は、ターゲットの製品名を変更したためであることが判明しました(ターゲットを選択し、[ビルド設定]タブで製品名の値を設定します)。しかし、アプリをアーカイブしてiTunesでデバイスにインストールすると、新しい名前で正常に起動したため、問題はXcodeにあったようです.

于 2012-08-30T17:44:17.787 に答える