3

私はIOSプロジェクトに取り組んでいるときに疑問を抱きました。テストの目的で、このようなコードをメインに作成しました...

printf("start\n");
FILE *fp = fopen("/Users/gui_test/Desktop/ritun/hello_test/hello_test/expt.txt", "a + b");

int a = 5, b = 5;
int c = a + b;

fprintf(fp, "%d\t", c);
fflush(fp);

fclose(fp);

printf("end \n");

ファイルの書き込みをテストするために、メインの以下の行をコメントアウトしました。

return UIApplicationMain(argc, argv, nil, NSStringFromClass([ofi_video_monetAppDelegate class]));

回答はファイルに正常に書き込まれますが、2回です。これがなぜであるか、誰かが知っていますか?main()以外の場所で試してみると、mainで何が起こっているのかを1回だけ書き込んでいます。

4

2 に答える 2

0

このリンクを参照してください。主な機能の使い方を説明しています。

mainは、すべてのCまたはCベースのプログラムが開始される関数です。これは予約名です。つまり、mainという名前の関数を使用することはできません。mainの前にあるintという単語は、関数の戻り型の宣言です。

int main (int argc, const char * argv[])
{
        // memory management
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        // printing on the log
        NSLog (@"Hello, World!");

       [pool drain];
//The final line tells the main method to return the value 0. Remember that the int the preceded main tells the system that this function will return a value. This value is 0. By convention, a return value of zero indicates that the function was successful.
       return 0;
}

NSAutoreleasePoolも参照してください

于 2012-11-20T11:53:33.017 に答える
0

次の行をコメントアウトして0を返すと、メインが内部で2回呼び出されます。

UIApplicationMain(argc, argv, nil, NSStringFromClass([ofi_video_monetAppDelegate class]));

1を返しましたが、正常に動作し、ファイルに1つのエントリがあり、重複はありません。

于 2012-11-21T06:50:03.737 に答える