NSStream-ni sinxronlash uchun qanday qo'ng'iroq qilish kerak

Natijalarni olish uchun NSStream bilan bir vaqtda qanday qo'ng'iroq qilish mumkin?

Hozir men delegat usullaridan biriga qayta qo'ng'iroq qilmoqdaman

 `(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- 
4
nima uchun sinxronlashtirilgan ma'lumotlarni oqimlashni xohlaysiz?
qo'shib qo'ydi muallif TheEye, manba

1 javoblar

Agar NSStream - bu oqimga ma'lumotni o'qimagan yoki yozmagan mavhum bir sinf. Ma'lum ma'lumotlarga kirish uchun siz NSInputStream yoki NSOutputStream (yoki NSStream maxsus kichik sinfi) kabi aniq subklassga ega bo'lishingiz kerak. Ma'lumotni NSInputStream da o'qish uchun o'qish: maxLength: . Ehtimol, oqimni so'rashni xohlaysizmi, agar u yangi ma'lumotlar mavjudligini so'rasa, hasBytesAvailable . Agar NSOutputStream o'xshash write: maxLength: va hasSpaceAvailable usullariga ega.

So'rovni oldini olish uchun iOS dokumentatsiyasi tomonidan yuqori darajada da'vat etiladi va uning o'rniga ikkinchi marta chaqiruvni qayta topshirish usullariga javob berish orqali ishlamaydigan vaqtni rejalashtirishdan foydalaning.

7
qo'shib qo'ydi
Agar siz alohida ishda ishlayotgan bo'lsangiz, so'roq qilish kerak emas. Kirish oqimidan faqat o'qishingiz mumkin va ma'lumotlar mavjud bo'lguncha/oqim yopilganda/xatolik yuzaga kelguncha bloklanadi. Javoblar posix xatti-harakatlarini aks ettiradi, bu erda 0 oqim yopiq degan ma'noni anglatadi, -1 - xato yuz berdi. Musbat raqam oqimdan o'qiladigan haqiqiy baytlarni bildiradi.
qo'shib qo'ydi muallif JugsteR, manba