0

デーモンプロセスの最後または誰かがプロセスを終了した場合に、デーモンプロセスに割り当てられたリソースを解放しようとしています。

まあ言ってみれば、

int main(int argc, const char * argv[])
{
    Controller *controller = [[Controller alloc] init];
    [controller allocateresources];

    [[NSRunLoop currentRunLoop] run];

    [controller release];

    return 0;
}

ここでは Controller release は呼び出されません。Quit [SIGTERM Signal] は、実行ループを終了するだけです。アプリケーションの最後にクラス Controller に割り当てられたリソースを解放するにはどうすればよいですか?

編集:システムがリソースを要求することを理解しています。私が解決しようとしているのは、クロスプロセスの協調ロックのようなものです。

4

1 に答える 1

2

-run メソッドから戻るという保証は本当にないと思います。したがって、リソースを解放するためにこれに頼るべきではありません。それを行う他の方法があります。たとえば、非常に低レベルのソリューションは、atexit ハンドラーを実装することです。

https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/atexit.3.html

そこで必要なロックの解放を行います。

于 2013-04-04T14:02:42.623 に答える