Tra cứu proxy của CFNetwork là một C API dùng trực tiếp được từ C++; việc chuyển mọi thứ thành đối tượng Objective-C là tùy chọn. Gọi CFNetworkCopyProxiesForURL với CFURL đích và các cài đặt từ CFNetworkCopySystemProxySettings để nhận các từ điển proxy đã được sắp xếp.

Giá trịQuyền sở hữu
Đối tượng do Copy tạo hoặc trả về, bao gồm tuyến và cài đặtDo bên gọi sở hữu; giải phóng từng đối tượng sở hữu khác null
Từ điển lấy từ mảng hoặc tên máy chủ lấy từ từ điển qua GetVay mượn; không giải phóng nếu chưa giữ lại

Với routes hợp lệ và chỉ mục trong phạm vi, việc trích xuất có thể là:

CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
    CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
    CFDictionaryGetValue(proxy, kCFProxyHostNameKey));

Đọc kCFProxyTypeKey trước khi coi mục đó là điểm cuối. Ứng viên trực tiếp và ứng viên cấu hình tự động cần cách xử lý khác nhau.

Chuyển tên máy chủ CFString và cổng CFNumber của một mục cụ thể trong khi chủ sở hữu còn sống. Các giá trị C++ trích xuất sau đó có thể đi vào cấu hình của bộ truyền. Để giữ chính CFString sau khi có kết quả, hãy giữ nó trước rồi cân bằng lại bằng CFRelease; nếu không, hãy hoàn tất trước khi giải phóng chủ sở hữu chứa nó.

Khi dọn dẹp, giải phóng URL đích đã tạo/sao chép, từ điển cài đặt và mảng kết quả, dùng scope guard nếu phù hợp. Chỉ riêng kiểu CFStringRef của một biến không trao quyền sở hữu đối với kết quả Get.

Bài viết liên quan