قراءة نتائج وكيل CFNetwork مباشرةً في C++
استخدم واجهات البحث عن الوكيل بلغة C من Apple داخل C++ واحتفظ بقيم القواميس المستعارة حيّة دون تحريرها ككائنات مملوكة.
البحث عن الوكيل في CFNetwork هو واجهة C صالحة للاستخدام مباشرةً من C++؛ وتحويل كل شيء إلى كائنات Objective-C أمر اختياري. اطلب CFNetworkCopyProxiesForURL مع CFURL الهدف والإعدادات من CFNetworkCopySystemProxySettings للحصول على قواميس وكيل مرتَّبة.
| القيمة | الملكية |
|---|---|
| الكائنات التي تنشئها Copy أو تُعيدها، بما في ذلك المسارات والإعدادات | مملوكة للمستدعي؛ حرِّر كل كائن مملوك غير فارغ |
| القاموس من المصفوفة أو اسم المضيف من القاموس عبر Get | مستعار؛ لا تحرِّره دون أن تكون قد احتفظت به |
مع routes صالحة وفهرس داخل النطاق، يمكن أن يكون الاستخراج كما يلي:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
اقرأ kCFProxyTypeKey قبل التعامل مع المدخل كنقطة نهاية. المرشحات المباشرة ومرشحات الضبط التلقائي تتطلب معالجة مختلفة.
حوِّل اسم المضيف CFString ومنفذ CFNumber لمدخل محدد بينما يبقى المالك حيًّا. ويمكن بعد ذلك للقيم المستخرجة في C++ أن تدخل في إعدادات النقل. وللاحتفاظ بـ CFString نفسه بعد انتهاء النتيجة، احتفظ به أولًا ثم وازِن ذلك لاحقًا بـ CFRelease؛ وإلا فأنهِ العمل قبل تحرير المالك الحاوي له.
حرِّر عنوان URL الهدف المنشأ/المنسوخ وقاموس الإعدادات ومصفوفة النتائج عند التنظيف، واستخدم حارس نطاق عند الاقتضاء. ونوع CFStringRef للمتغير وحده لا يمنح ملكية على نتيجة Get.