2014-04-10 5 views
5

मैं विशेष रूप से निजी एपीआई में आईओएस में डमी हूं।आईओएस में नए जेनरेट किए गए निजी एपीआई हेडर कैसे लोड करें?

मेरे पास परीक्षण के लिए आवेदन है और अब मुझे ऐप स्टोर के लिए यह एप्लिकेशन निजी एपीआई () का उपयोग करने की आवश्यकता नहीं है।

मैंने iOS-Runtime-Headers से जेनरेट किए गए हेडर डाउनलोड किए और अगला क्या?

/System/Library/ के तहत मेरे पास पुस्तकालयों की सूची है जिसमें Frameworks, ..., PrivateFrameworks भी शामिल है।

क्या मुझे iOS-Runtime-Headers से कॉपी किए गए मूल ढांचे को प्रतिस्थापित करने की आवश्यकता है?

क्योंकि मेरे पास अन्य एप्लिकेशन हैं जो केवल Public API का उपयोग करते हैं और मैं उन्हें नुकसान नहीं पहुंचाता। मूल पथ को

NSBundle *b = [NSBundle 
     bundleWithPath:@"/System/Library/PrivateFrameworks/GAIA.framework"]; 
BOOL success = [b load]; 

लेकिन यहाँ पथ अंक:

तैनात लिंक से वे उदाहरण के लिए पुस्तकालय को मान्य करने के बताओ।

या मैं कुछ याद आती है,

आप

उत्तर

6

सबसे पहले, ऐप्पल द्वारा प्रदान किए गए किसी भी शीर्षलेख को प्रतिस्थापित न करें।

आम तौर पर, यह दो तरह से किया है:

1) आप अपनी परियोजना के लिए इन हेडर के कुछ कॉपी कर सकते हैं और के रूप में आप किसी भी अन्य शीर्ष लेख शामिल सिर्फ इन फ़ाइलों को एक ही तरह से शामिल

#import "SomeHeader.h" 

2) कभी-कभी आपको उन्हें थोड़ा सा (उन्हें संपादित करना) को स्वच्छ करना होता है। अक्सर, इन हेडर उन में में की तरह कुछ है:

#import "NSObject.h" 

और compliller, यह पता लगाने के लिए सक्षम नहीं होगा क्योंकि NSObject में निर्मित वर्ग है। तो, आपको इसे इस तरह से हटाने की जरूरत है।

3) यदि आपको इसके कुछ तरीकों की आवश्यकता है, तो तुयूका नोरी समाधान सही है।

इनमें से शीर्ष पर, आपको उपयुक्त निजी ढांचे के खिलाफ (स्थिर या गतिशील रूप से) लिंक करना होगा (केवल हेडर सहित पर्याप्त नहीं है)।

+0

आम तौर पर मैं निजी एपीआई का उपयोग करके डिवाइस को सोने के लिए जाना चाहता हूं।मुझे पता है कि यह मेरे प्रश्न का संदर्भ नहीं देता है लेकिन मैंने आपके उत्तरों को अधिकांश प्रश्नों में निजी एपीआई का संदर्भ दिया है। क्या आपको पता है कि उचित शीर्षलेख कहां देखना है? चूंकि अधिकांश उत्तर आज प्रासंगिक नहीं हैं (मैं 6.1 का उपयोग करता हूं)। वैसे भी धन्यवाद – snaggs

+0

@fessy: मैं एक समाधान खोजने में भी सक्षम नहीं था जो आईओएस 6.x पर पूरी तरह से काम करता है। ये सभी डिमस्क्रीन और ब्लैंकस्क्रीन केवल आंशिक रूप से स्क्रीन को धुंधला कर रहे थे (उनमें से कोई भी पूरी तरह से स्क्रीन बंद नहीं हुआ)। तो, मुझे यकीन नहीं है। आप इंजीनियर स्प्रिंगबोर्ड को रिवर्स करने और वहां खोजने की कोशिश कर सकते हैं। हालांकि, इसे कुछ हकदारता से संरक्षित किया जा सकता है। –

4

किसी भी फाइल की जगह नहीं है धन्यवाद। इसके बजाय, उस शीर्षक के साथ एक हेडर फ़ाइल लिखें जिसका आप उपयोग करना चाहते हैं। यदि आपको ऑब्जेक्टिव-सी विधि की आवश्यकता है, तो एक अद्वितीय नाम वाला एक श्रेणी जोड़ें, उदा।

@interface NSString (MyOwnPrivateCategory) 
- (void) privateMethodDeclaredInRuntimeHeaders; 
@end 

इसे आयात करें और अपनी पसंद के अनुसार विधि का उपयोग करें।

दिए गए नमूना कोड से पता चलता है कि अगर आप इसे लिंक नहीं करना चाहते हैं तो रनटाइम पर एक फ्रेमवर्क कैसे लोड करें। चूंकि कुछ ढांचे निजी हैं, इसलिए वे आईओएस के सभी संस्करणों में उपलब्ध नहीं हो सकते हैं।

संबंधित मुद्दे