Membaca hasil proxy CFNetwork langsung di C++
Gunakan API pencarian proxy C dari Apple melalui C++ dan pertahankan nilai dictionary pinjaman tetap hidup tanpa melepaskannya sebagai objek milik.
Pencarian proxy CFNetwork adalah API C yang dapat dipakai langsung dari C++; mengubah semuanya menjadi objek Objective-C bersifat opsional. Panggil CFNetworkCopyProxiesForURL dengan CFURL tujuan dan pengaturan dari CFNetworkCopySystemProxySettings untuk memperoleh dictionary proxy yang terurut.
| Nilai | Kepemilikan |
|---|---|
| Objek yang dibuat atau dikembalikan Copy, termasuk rute dan pengaturan | Milik pemanggil; lepaskan setiap objek milik yang bukan null |
| Dictionary dari array atau nama host dari dictionary melalui Get | Dipinjam; jangan dilepaskan tanpa menyimpannya lebih dulu |
Untuk routes yang valid dan indeks dalam rentang, ekstraksinya dapat berupa:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Baca kCFProxyTypeKey sebelum memperlakukan entri sebagai endpoint. Kandidat langsung dan kandidat konfigurasi otomatis memerlukan penanganan berbeda.
Ubah nama host CFString dan port CFNumber dari entri konkret selama pemiliknya masih hidup. Nilai C++ hasil ekstraksi kemudian dapat masuk ke konfigurasi transport. Untuk menyimpan CFString itu sendiri melewati hasil, simpan dulu lalu imbangi dengan CFRelease; jika tidak, selesaikan sebelum melepaskan pemilik yang memuatnya.
Lepaskan URL tujuan yang dibuat/disalin, dictionary pengaturan, dan array hasil saat pembersihan, gunakan scope guard bila perlu. Tipe CFStringRef pada suatu variabel saja tidak memberikan kepemilikan atas hasil Get.