CFNetwork proxy sonuçlarını doğrudan C++ içinde okumak
Apple'ın C proxy arama API'lerini C++ üzerinden kullanın ve ödünç alınan sözlük değerlerini sahiplenilmiş nesneler olarak serbest bırakmadan canlı tutun.
CFNetwork proxy araması, C++ içinden doğrudan kullanılabilen bir C API'sidir; her şeyi Objective-C nesnelerine dönüştürmek isteğe bağlıdır. Sıralı proxy sözlükleri elde etmek için CFNetworkCopyProxiesForURL işlevini hedef CFURL ve CFNetworkCopySystemProxySettings ayarlarıyla çağırın.
| Değer | Sahiplik |
|---|---|
| Copy tarafından oluşturulan veya döndürülen nesneler, rotalar ve ayarlar dahil | Çağıranın sahipliğinde; null olmayan her sahipli nesneyi serbest bırakın |
| Diziden alınan sözlük veya Get aracılığıyla sözlükten alınan ana bilgisayar adı | Ödünç alınmış; önceden elde tutmadan serbest bırakmayın |
Geçerli routes ve aralık içinde bir dizin için çıkarma şöyle olabilir:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Girdiyi uç nokta olarak ele almadan önce kCFProxyTypeKey anahtarını okuyun. Doğrudan adaylar ve otomatik yapılandırma adayları farklı işlem gerektirir.
Sahibi canlıyken belirli bir girdinin CFString ana bilgisayar adını ve CFNumber bağlantı noktasını dönüştürün. Çıkarılan C++ değerleri daha sonra taşıyıcının yapılandırmasına girebilir. CFString'in kendisini sonucun ötesinde tutmak için önce onu elde tutun ve sonra bunu CFRelease ile dengeleyin; aksi halde onu içeren sahibi serbest bırakmadan önce işi bitirin.
Temizlik sırasında oluşturulan/kopyalanan hedef URL'yi, ayarlar sözlüğünü ve sonuç dizisini serbest bırakın; uygunsa bir kapsam koruyucusu kullanın. Bir değişkenin yalnızca CFStringRef türü olması, bir Get sonucu üzerinde sahiplik vermez.