1

いつ自動リリースされたオブジェクトか疑問があります。この質問を見つけたとき、

スレッドの受け入れられた回答では、runloopの実行について以下の説明が提供されています。

void int UIApplicationMain (int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName) {
    UIApplication *app = /* create app using principalClassName */;
    [app setDelegate:/* create delegate using delegateClassName */];
    while (![app shouldTerminate]) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        event = [app getNextEvent];
        [app dispatchEvent:event];
        [pool drain];
    }
}

これは、runloopの実行がどのように発生するのですか?

また、runloopを実行するたびに、新しい自動解放プールが作成されて解放されるということですか。

4

1 に答える 1

3

はい。そこにある各ループでは、新しいプールを作成し、それを破棄しています。

これdrainは、参照カウント環境でがと同等releaseであるため、破棄される方法を説明しています。次のループ、あなたallocinit別の。

于 2012-10-29T13:56:33.710 に答える