これが状況です。展開ターゲットを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で上記のメイン定義を記述してプロジェクトを続行しても問題ありません。