خواندن نتایج پروکسی CFNetwork مستقیماً در C++
از APIهای جستوجوی پروکسی C اپل در C++ استفاده کنید و مقادیر دیکشنری قرضگرفته را بدون آزاد کردن بهعنوان اشیای مالکیتی زنده نگه دارید.
جستوجوی پروکسی CFNetwork یک API به زبان 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 را نمیدهد.