0

これが状況です。展開ターゲットを5.0に設定してxcode4.2でプロジェクトを作成しました。しかし、4.0まではコードに下位互換性を持たせたいと思っています。現在、xcode 4.2には4.2または4.0のシミュレーターがないので、xcode4.0でコードを実行します。ここで2つのエラーが発生しました:

  1. unknown "strong". I removed it by adding retain instead.
  2. unknown "@" in project, so I added below code in main.h 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;

これは、ARCまたはiOS5の前にmain.hで一般的に書いたものです。

私が遭遇した別の問題は、main.hが呼び出されたが、AppDelegateが呼び出されなかったこと、つまりaplicationDidFinishLaunchingが呼び出されなかったことです。次に、上記のコードを次のように変更しました

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass(AppDelegate.class));
[pool release];
return retVal;

今、私は問題なくビルドが成功し、両方のバージョンのxcodeでコンパイルされました。なぜこれが起こったのかを知りたいだけです。私には良くないように思われるので、xcode4.2で上記のメイン定義を記述してプロジェクトを続行しても問題ありません。

4

1 に答える 1

0

これを試してください。それはあなたの質問に答えるはずです。

基本的には、最初にiOS4を目指す必要があり、iOS5で動作するはずです。問題は、iOS4が新機能を認識していないため、iOS5を最初に起動するときです。苦痛に思えるかもしれませんが、iOS4をサポートする必要があるかどうかを検討してください。現在、iOS6があり、iOS5はすべてのバージョンの中で過半数を占めています...

于 2012-07-02T10:08:57.430 に答える