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 回答