לקרוא תוצאות פרוקסי של CFNetwork ישירות ב-C++
השתמשו ב-API לחיפוש פרוקסי ב-C של Apple מתוך C++ ושמרו על ערכי מילון מושאלים חיים בלי לשחררם כאובייקטים בבעלותכם.
חיפוש הפרוקסי של CFNetwork הוא API של C שאפשר להשתמש בו ישירות מ-C++; המרת הכול לאובייקטים של Objective-C היא רשות. קראו ל-CFNetworkCopyProxiesForURL עם CFURL היעד וההגדרות מ-CFNetworkCopySystemProxySettings כדי לקבל מילוני פרוקסי מסודרים.
| ערך | בעלות |
|---|---|
| אובייקטים ש-Copy יוצר או מחזיר, כולל מסלולים והגדרות | בבעלות הקורא; שחררו כל אובייקט בבעלות שאינו null |
| מילון מהמערך או שם מארח מהמילון דרך 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.