在NSRunLoop结束时释放资源

时间:2013-04-04 11:54:19

标签: objective-c macos cocoa daemon nsrunloop

我试图释放守护进程中分配的资源,或者有人退出进程。

让我们说,

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

    [[NSRunLoop currentRunLoop] run];

    [controller release];

    return 0;
}

此处不会调用Controller版本。退出[SIGTERM Signal]只是终止runloop。如何在应用程序结束时释放在类Controller中分配的资源?

编辑:据我所知,系统会将资源退回。我试图解决的问题是跨进程协作锁。

1 个答案:

答案 0 :(得分:2)

我认为确实无法保证您将从-run方法返回。所以你不应该依赖它来释放资源。还有其他方法可以做到这一点。例如,一个非常低级的解决方案是实现一个atexit处理程序

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

并在那里做必要的解锁。