2013-02-22 73 views
7

मुझे एक प्रश्न पूछा गया था, जब आपके डिवाइस से एक ढांचा गलती से हटा दिया जाएगा तो क्या होगा जब आईफोन या मैक हो सकता है?क्या होगा यदि किसी ऐप से ढांचा हटा दिया जाए?

चाहे आपका एप्लिकेशन क्रैश हो या यह बिना किसी त्रुटि के काम करेगा?

कृपया मुझे व्याख्याओं के साथ उत्तर दें।

+0

यदि यह एक नौकरी साक्षात्कार सवाल आप नौकरी साक्षात्कार टैग को जोड़ने के लिए चाहते हो सकता है किया गया था। यह अस्तित्व में है लेकिन अभी तक उपयोग नहीं किया गया था। यह उपयोगी हो सकता है अगर कुछ प्रश्न इस तरह चिह्नित किए जाएंगे। (सिर्फ एक राय) –

+0

@rokjarc हम अब उस टैग का उपयोग नहीं कर रहे हैं; यह वास्तव में प्रोग्रामिंग के लिए प्रासंगिक नहीं है। टैग्स के बारे में सोचें कि एक प्रोग्रामर की विशेषज्ञता होगी और प्रश्नों को देखने के लिए 'अनुसरण' करना चाहेंगे। –

+0

@Anop ऊपर मेरी टिप्पणी देखें; मैं साक्षात्कार-प्रश्न टैग हटा रहा हूं। –

उत्तर

4

आपको लिंकिंग त्रुटि मिल सकती है। यदि फ्रेमवर्क फ़ोल्डर एप्लिकेशन के अंदर है तो इसका रनटाइम लिंकिंग का मतलब है।

ओएस एक्स एक "स्थापित नाम" प्रत्येक गतिशील पुस्तकालय के अंदर एम्बेड करता है। यह इंस्टॉल नाम वह पथ है जहां पुस्तकालय पाया जा सकता है जब को लोड करने की आवश्यकता है। जब आप गतिशील लाइब्रेरी के विरुद्ध लिंक करते हैं, तो यह इंस्टॉल नाम एप्लिकेशन बाइनरी में कॉपी किया गया है। जब एप्लिकेशन चलता है, तो कॉपी किए गए इंस्टॉल नाम को लाइब्रेरी या ढांचे का पता लगाने के लिए उपयोग किया जाता है।

$ otool -D /Applications/Google\ Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python 
    /Applications/Google Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python: 
    @executable_path/../Frameworks/Python.framework/Versions/2.6/Python 

इसलिए यदि आप को नष्ट करेगा फ़्रेमवर्क आप Dyld त्रुटि मिल जाएगा फ़ोल्डर।

Dyld Error Message: 
    Library not loaded: @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle 
    Referenced from: /Applications/Transmission.app/Contents/MacOS/Transmission 
    Reason: image not found 

enter image description here

enter image description here

1

यदि कोई ढांचा हटा दिया गया है, तो उस ढांचे से जुड़े सॉफ़्टवेयर को प्रभावित किया जाएगा। यदि यह एक सिस्टम ढांचा है, तो उम्मीद है कि आपके सिस्टम विफल होने लगेंगे। यदि यह एक तृतीय पक्ष ढांचा है, तो इसे प्रभाव के दायरे में सीमित किया जाना चाहिए। यदि यह आपके ऐप बंडल में है, और आपका ऐप कोड-हस्ताक्षरित है, तो बंडल फ्रेमवर्क को हटाने से आपके ऐप को लॉन्च होने से रोका जा सकता है।

0

यह इस बात पर निर्भर करता है कि एप्लिकेशन को आपके द्वारा निकाले गए ढांचे तक पहुंच की आवश्यकता है या नहीं। यदि आपको एप्लिकेशन को ढांचे की आवश्यकता है तो यह संकलित नहीं होगा। यदि आपको इसकी आवश्यकता नहीं है, तो यह सामान्य की तरह संकलित होगा।