高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



*NW 36 - アプリケーションを書くときに CloseOpenTransport を呼ぶ

(96 年 7 月 3 日)

Q: アプリケーションを書くときに CloseOpenTransport を呼ぶ必要はない、とどこかで読んだ記憶があるのですが、これは本当でしょうか?

A: 正しいともいえますが、そうでないともいえます。元の OT プログラミングマニュアルには、アプリケーション側で CloseOpenTransport を呼ばなくてもいい、と書かれています。しかし、OT 1.1 以前のバージョンにはバグがあり、CloseOpenTransport を呼ばずに PPC ネイティブ・アプリケーションを終了すると、それを適切にメモリからクリーンアップできませんでした。

次に、ポイントとなるいくつかの規則を示します。
1. アプリケーション以外のコードを終了する際は、常に CloseOpenTransport を呼ぶ必要があります。
2. 68K アプリケーションはCloseOpenTransport を呼ばなくても自動的にクリーンアップされるはずですが、できるかぎり CloseOpenTransport を呼ぶことをお勧めします。
3. OT 1.1 以前のバージョン上で実行する PPC アプリケーションを終了するときは、必ず CloseOpenTransport を呼んでください。 3 番目のポイントを確実に満たすためには、次のように、メイン・アプリケーション・コードの中で CFM 終了プロシージャを使うという方法があります。

static Boolean gOTInited = false;

void CFMTerminate(void)
{
   if (gOTInited) {
       gOTInited = false;
       (void) CloseOpenTransport();
   }
}

void main(void)
{
    OSStatus err;

    err = InitOpenTransport();
    gOTInited = (err == noErr);

    // ここにアプリケーションの残りのコードを書く

    if (gOTInited) {
        (void) CloseOpenTransport();
        gOTInited = false;
    }
}

注意:アプリケーション以外のコードの場合は、常に CloseOpenTransport を呼ぶ必要があります。

注意:Mac OS に自動的なクリーンアップ機構が用意されているときでも、通常は "安全対策" としてこの方法を採用してください。少なくとも通常のアプリケーションの終了時には、手動でクリーンアップを行うのが確実な方法といえます。


[ Technical Q&A's : Communications & Collaboration : Networking : NW36 ]