CFNetwork-ის პროქსის შედეგების უშუალო წაკითხვა C++-ში
გამოიყენეთ Apple-ის C პროქსის ძიების API-ები C++-დან და შეინარჩუნეთ ნასესხები ლექსიკონის მნიშვნელობები ცოცხლად, საკუთრებულ ობიექტებად გათავისუფლების გარეშე.
CFNetwork-ის პროქსის ძიება არის C API, რომლის გამოყენებაც შესაძლებელია უშუალოდ 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-ის შედეგზე საკუთრებას არ იძლევა.