የCFNetwork ፕሮክሲ ውጤቶችን በC++ በቀጥታ ማንበብ
የApple የC ፕሮክሲ መፈለጊያ APIዎችን ከC++ ይጠቀሙ እና የተዘረጉ የመዝገብ ቤት እሴቶችን እንደ ባለቤትነት ሳይለቁ ሕያው ያድርጉ።
የCFNetwork የፕሮክሲ ፍለጋ ከC++ በቀጥታ የሚጠቀሙበት C API ነው፤ ሁሉንም ወደ 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 ውጤት ላይ ባለቤትነት አይሰጥም።