Eon*_*nil 105 syntax objective-c use-case keyword
我在NSObject.h中找到了一个奇怪的关键字
- (oneway void)release;
Run Code Online (Sandbox Code Playgroud)
我搜索了网络,并了解到它与异步消息传递有关,它与Erlang的消息传递类似.
看来这可以做很多有趣的事情.这个关键字的一些好用例是什么?
ugh*_*fhw 108
oneway与分布式对象API一起使用,允许在不同的线程或应用程序之间使用objective-c对象.它告诉系统在方法返回之前它不应该阻塞调用线程.没有它,调用者将阻塞,即使方法的返回类型为void.显然,它永远不会与void之外的任何东西一起使用,因为这样做意味着该方法返回一些东西,但是调用者没有得到它.
有关分布式对象的更多信息,请参阅Cocoa Conceptual DistrObjects.
Fre*_*man 18
根据Apple的文档,单向仅用于分布式对象(而不是用于多线程).
单向修改器仅在对象是远程时使用.在这种情况下,释放调用可以异步返回(在方法终止之前).在网络中它是有道理的,因为等待返回消息可能需要一段时间.
release方法没有返回值,所以调用它可以异步执行.相反,retain和autorelease返回一个id,因此我们必须等待返回消息在整个网络中传输.