CFNetwork ပရောက်စီရလဒ်များကို C++ တွင် တိုက်ရိုက်ဖတ်ခြင်း
Apple ၏ C ပရောက်စီရှာဖွေမှု API များကို C++ မှ အသုံးပြုပြီး ငှားထားသော အဘိဓာန်တန်ဖိုးများကို ပိုင်ဆိုင်သော အရာဝတ္ထုအဖြစ် မလွှတ်ဘဲ ရှင်သန်စေပါ။
CFNetwork ၏ ပရောက်စီရှာဖွေမှုသည် C++ မှ တိုက်ရိုက်အသုံးပြုနိုင်သော C API ဖြစ်သည်၊ အရာအားလုံးကို 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၊ ဆက်တင်အဘိဓာန်နှင့် ရလဒ်အယ်ရေးကို လွှတ်ပါ၊ သင့်လျှင် scope guard ကို အသုံးပြုပါ။ ကိန်းရှင်၏ CFStringRef အမျိုးအစားတစ်ခုတည်းဖြင့် Get ရလဒ်အပေါ် ပိုင်ဆိုင်မှု မပေးပါ။