Używam (i jestem zobowiązany do używania) schematu innej firmy, do którego nie mam źródła. Struktura zewnętrzna obsługuje tworzenie uwierzytelnionego połączenia klient/serwer i przekazuje parę otwartych NSStreams.Czy można określić NSRunLoop/NSThread, który jest powiązany z otwartym NSStream?
Proces tworzenia strumienia w dokumentach Apple to: alloc/init, ustaw delegata, harmonogram w pętli uruchamiania i otwórz. Dokumenty Apple idą dalej, mówiąc: "Nigdy nie powinieneś próbować uzyskać dostęp do zaplanowanego strumienia z wątku innego niż ten, który posiada pętlę uruchamiania strumienia." https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Streams/Articles/ReadingInputStreams.html#//apple_ref/doc/uid/20002273-1001844
Proces usuwania strumienia jest następujący: zamknij, niezaplanuj, zwolnij.
Jeśli tworzy się strumień samodzielnie, jest jasne, gdzie został zaplanowany strumień. Jeśli struktura zewnętrzna tworzy strumień, może nie wiedzieć, gdzie został zaplanowany strumień.
Przeglądając dokumentację, którą znalazłem, nie widziałem sposobu, aby programowo określić NSRunLoop i NSThread, z którymi związany jest otwarty NSStream. Czy istnieje sposób na określenie tych informacji w czasie wykonywania?
Edytor usunął tag środowiska wykonawczego Objective-C, ale nie zaoferował odpowiedzi na to pytanie. Sądzę, że jeśli istnieje odpowiedź, to bardzo dobrze może ona obejmować przesłuchanie środowiska wykonawczego. Dlatego pozostaw tag środowiska wykonawczego bez zmian. – xyzzycoder
Myślenie, że użytkownik może leżeć w określonej domenie, nie oznacza, że _question_ powinno być tak oznaczone. Środowisko wykonawcze ObjC ma niższy poziom (lub przynajmniej inny) niż wątki, strumienie i pętle uruchomieniowe - są to koncepcje framework. –
Czy potrafisz nazwać framework? Czy znasz rzeczywistą klasę obiektów strumienia? 'NSInput' /' OutputStream' lub niestandardowa podklasa? –