首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Objective-C中“单向空”的用例?

Objective-C中“单向空”的用例?
EN

Stack Overflow用户
提问于 2011-03-31 11:18:22
回答 2查看 18K关注 0票数 108

我在NSObject.h中发现了一个奇怪的关键字

代码语言:javascript
复制
- (oneway void)release;

我在网上搜索,了解到它与异步消息传递有关,它看起来与Erlang的消息传递相似。

看起来这可以做很多有趣的事情。这个关键字有哪些好的用例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-31 12:00:17

oneway与分布式对象API一起使用,它允许在不同的线程或应用程序之间使用objective-c对象。它告诉系统在方法返回之前不应该阻塞调用线程。如果没有它,即使方法的返回类型是void,调用者也会阻塞。显然,它只与void一起使用,因为这样做意味着方法会返回一些东西,但调用者不会得到它。

有关分布式对象的更多信息,请参阅Cocoa Conceptual DistrObjects

票数 112
EN

Stack Overflow用户

发布于 2011-07-04 15:59:51

根据Apple的文档,oneway仅用于分布式对象(而不用于多线程)。

仅当对象为远程对象时才使用oneway修改器。在这种情况下,release调用可以异步返回(在方法终止之前)。在网络中,这是有意义的,因为等待返回消息可能需要一段时间。

release方法没有返回值,因此调用它可以异步执行。相反,retain和autorelease返回一个id,因此我们必须等待返回消息在整个网络中传输。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5494981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档