1)return文がちょうどそこにおそらくある(#2矛盾)(そうではありません結局のところ、特別な方法でマークアップされています)。したがって、コンパイラのコードフロー分析では、return文が見つからないことが警告されます。それでもUIApplicationMain()に戻り値がある理由は説明されていません。実際にはが可能なエラー状況があるかもしれません。リターン、誰が知っていますか。プールなし解放任意のオブジェクトは、アプリケーションの全期間にわたって持続し、この自動解放プール、で終わるだろうと私はUIApplicationMain周りのメイン()で自動解放プールを持つと思う
2)は、間違っています。だから効果的にオブジェクトはまだ漏れています。
通常、自動解放プールがない場合、ランタイムは不足しているプールに関するエラーメッセージを記録し、_NSAutoreleaseNoPoolにブレークポイントを設定してプールレスの自動解放がどこで発生するかを検出するように指示します。したがって、テンプレート内に見つかったトップレベルのNSAutoreleasePoolは、実際にはで、ユーザからのこのリークはです。
UIApplicationMain()は、必要に応じて独自の自動解放プールを構築する必要があります(イベントプールを使用してプールを作成してください。誰かが実際にUIApplicationMain()を呼び出す前にObjCコードを実行する必要があると思っている場合(そしてapplicationDidFinishLaunchingなどで同じ作業を行うことはできません)、 UIApplicationMain()の前にいつでもプールを作成できます。 UIApplicationMain()は(exit()のように)決して戻らないように文書化されているので、それに続くコマンドを持つことには意味がありません。プールは決して解放されないだろう。
Macテンプレートを見ると、実際にプールがありません。
3)Mac上でアプリケーションをダブルクリックしても、パラメータが使用されます。 OSは特定の情報をアプリケーションにそのまま渡します。最初のパラメータは、起動時の実行ファイルへのパスです。バンドル内のファイルを見つけるために必要です。Finderから起動するとMacでは、PSN(プロセスシリアル番号)もパラメータとしてアプリケーションに渡されます:引数部分に
05.07.11 22:18:54,129 [0x0-0x21e21e].com.thevoidsoftware.MacTestApp: 0: /Volumes/RamDisk/MacTestApp-fdcuwfrzopalmgaufwujijhqhvjc/Build/Products/Debug/MacTestApp.app/Contents/MacOS/MacTestApp
05.07.11 22:18:54,129 [0x0-0x21e21e].com.thevoidsoftware.MacTestApp: 1: -psn_0_2220574
Macテンプレートに関しては、ガベージコレクション(参照カウントされていない環境)を使用している可能性がありますか? iOSでは、それを持っていません。 –
@Cyril Godefroyは怠惰な開発者だけがガベージコレクションを使用し、デフォルトでは有効になっていません。私はそれが嫌いですが、それは私の意見です。 –
プレリリースソフトウェアにアクセスできる場合は、その質問に自分で回答することができます。私はもっと言うことはできません。 – uliwitness