我在NSObject.h中发现了一个奇怪的关键字
- (oneway void)release;
我在网上搜索,了解到它与异步消息传递有关,它看起来与Erlang的消息传递相似。
看起来这可以做很多有趣的事情。这个关键字有哪些好的用例?
发布于 2011-03-31 12:00:17
oneway
与分布式对象API一起使用,它允许在不同的线程或应用程序之间使用objective-c对象。它告诉系统在方法返回之前不应该阻塞调用线程。如果没有它,即使方法的返回类型是void,调用者也会阻塞。显然,它只与void一起使用,因为这样做意味着方法会返回一些东西,但调用者不会得到它。
有关分布式对象的更多信息,请参阅Cocoa Conceptual DistrObjects。
发布于 2011-07-04 15:59:51
根据Apple的文档,oneway仅用于分布式对象(而不用于多线程)。
仅当对象为远程对象时才使用oneway修改器。在这种情况下,release调用可以异步返回(在方法终止之前)。在网络中,这是有意义的,因为等待返回消息可能需要一段时间。
release方法没有返回值,因此调用它可以异步执行。相反,retain和autorelease返回一个id,因此我们必须等待返回消息在整个网络中传输。
https://stackoverflow.com/questions/5494981
复制相似问题