Saya menemukan kata kunci yang aneh di NSObject.h
- (oneway void)release;
Saya mencari di web, dan mempelajarinya terkait dengan penyampaian pesan yang tidak sinkron, yang terlihat mirip dengan penyampaian pesan Erlang.
Sepertinya ini bisa membuat banyak hal menarik. Apa kasus penggunaan yang baik dari kata kunci ini?
objective-c
syntax
keyword
use-case
eonil
sumber
sumber
oneway void
adalah salah satu metafora indah yang terkadang kita lihat dalam pengkodean, dalam hal ini kematian. "Jika ada sesuatu di sisi lain, jangan beri tahu kami."Jawaban:
oneway
digunakan dengan API objek terdistribusi, yang memungkinkan penggunaan objek obyektif antara utas atau aplikasi yang berbeda. Ini memberi tahu sistem bahwa ia tidak boleh memblokir utas panggilan sampai metode kembali. Tanpanya, pemanggil akan memblokir, meskipun jenis kembalian metode tidak berlaku. Jelas, itu tidak pernah digunakan dengan apa pun selain void, karena melakukan itu berarti metode tersebut mengembalikan sesuatu, tetapi pemanggil tidak mendapatkannya.Untuk informasi lebih lanjut tentang objek terdistribusi, lihat Cocoa Conceptual DistrObjects .
sumber
Menurut dokumentasi Apple, satu arah hanya digunakan untuk objek terdistribusi (dan bukan untuk multithreading).
Pengubah satu arah hanya digunakan jika objeknya jauh. Dalam hal ini panggilan rilis dapat kembali secara asinkron (sebelum metode dihentikan). Dalam jaringan, ini masuk akal karena menunggu pesan balasan bisa memakan waktu cukup lama.
Metode rilis tidak memiliki nilai kembali sehingga panggilan itu dapat dijalankan secara asinkron. Sebaliknya, pertahankan dan pelepasan otomatis mengembalikan id dan karenanya kita harus menunggu pesan balasan ditransfer ke seluruh jaringan.
sumber
oneway
kata kunci menyebabkan pesan tidak memblokir utas pemanggil saat metode yang dipanggil dijalankan, itu membuat metode yang dipanggil dieksekusi pada utas kedua. Bukankah itu multitasking (dalam bentuk yang paling sederhana)? Dapatkah saya menggunakan ini untuk melepaskan beberapa operasi kecil dengan cepat (tanpa banyak usaha) ke utas lain? Terima kasih banyak.- (oneway void) release
itu? Ini bukan di mesin atau proses lain.one way
ke suatu metode berartidon't wait for the method to complete and return anything. block it if there is any n/w trafic or so.
Apakah saya masuk akal?