ऑब्जेक्टिव-सी विषय पर आधारित शीर्ष 30 साक्षात्कार प्रश्न और उत्तर (2026)

ऑब्जेक्टिव-सी साक्षात्कार प्रश्न और उत्तर

ऑब्जेक्टिव-सी आधारित नौकरी की तैयारी का मतलब है कि आप यह अनुमान लगा सकें कि साक्षात्कारकर्ता वाक्य संरचना और स्मृति मॉडल से परे किन प्रश्नों के बारे में पूछेंगे। ऑब्जेक्टिव-सी आधारित साक्षात्कार में लक्षित प्रश्नों के माध्यम से तर्क क्षमता, डिजाइन संबंधी निर्णय क्षमता और व्यावहारिक समझ का पता चलता है।

ये प्रश्न नए इंजीनियरों, मध्य-स्तरीय इंजीनियरों और वरिष्ठों के लिए नए रास्ते खोलते हैं, जो उद्योग के रुझानों और वास्तविक परिणामों को दर्शाते हैं। नियोक्ता व्यावहारिक अनुभव रखने वाले पेशेवरों से तकनीकी विशेषज्ञता, विश्लेषण और समस्या-समाधान कौशल को महत्व देते हैं, जो उत्पादन परिवेश में Objective-C कौशल को लागू करने के लिए टीम लीडरों और प्रबंधकों के साथ सहयोग करते हैं। यह दृष्टिकोण करियर के विभिन्न चरणों में विकास को बढ़ावा देता है।
अधिक पढ़ें…

👉 मुफ़्त PDF डाउनलोड करें: ऑब्जेक्टिव-सी इंटरव्यू प्रश्न और उत्तर

ऑब्जेक्टिव-सी के लिए शीर्ष साक्षात्कार प्रश्न और उत्तर

1) ऑब्जेक्टिव-सी क्या है और इसका उपयोग क्यों किया जाता है?

ऑब्जेक्टिव-सी एक है C प्रोग्रामिंग भाषा का एक सख्त सुपरसेट यह ऑब्जेक्ट-ओरिएंटेड क्षमताओं और एक डायनामिक रनटाइम को जोड़ता है। इसे मूल रूप से 1980 के दशक की शुरुआत में विकसित किया गया था और यह प्राथमिक भाषा है जिसका उपयोग किया जाता है। macOS और इससे पहले आईओएस ऐप डेवलपमेंट का अनुभव। Swiftयह C से सिंटैक्स विरासत में लेता है लेकिन ऑब्जेक्ट के लिए स्मॉलटॉक-शैली की मैसेजिंग का उपयोग करता है, जो रनटाइम पर डायनामिक रूप से मेथड को कॉल करने की अनुमति देता है।

Objective-C का उपयोग विकास के लिए किया जाता है Apple प्लेटफॉर्म पर नेटिव ऐप्स क्योंकि यह Apple के फ्रेमवर्क के साथ मजबूती से एकीकृत होता है, जैसे कि Foundation और कोकोआ/कोकोआ टच। यह डेवलपर्स को सिस्टम एपीआई और समृद्ध यूआई घटकों तक पूर्ण पहुंच के साथ एप्लिकेशन बनाने की अनुमति देता है।

उदाहरण:

#import <Foundation/Foundation.h>
@interface Sample : NSObject
- (void)showMessage;
@end

@implementation Sample
- (void)showMessage {
    NSLog(@"Hello from Objective-C!");
}
@end
int main() {
    Sample *obj = [[Sample alloc] init];
    [obj showMessage];
    return 0;
}

2) ऑब्जेक्टिव-सी प्रोग्राम की मूल संरचना की व्याख्या कीजिए।

एक ऑब्जेक्टिव-सी प्रोग्राम में आमतौर पर निम्नलिखित शामिल होते हैं:

  1. प्रीप्रोसेसर आदेश (जैसे #import)
  2. इंटरफेस (@interface) – यह क्लास और उसके सार्वजनिक तरीकों/गुणों को परिभाषित करता है
  3. कार्यान्वयन (@implementation) – इसमें विधि परिभाषाएँ शामिल हैं
  4. तरीके – वस्तुओं से जुड़े कार्य
  5. चर और अभिव्यक्तियाँ और कथन – कोड लॉजिक
  6. टिप्पणियाँ कोड लॉजिक का वर्णन करने के लिए

यह संरचना इंटरफ़ेस को कार्यान्वयन से स्पष्ट रूप से अलग करती है, जिससे कोड को मॉड्यूलर बनाने में मदद मिलती है।


3) ऑब्जेक्टिव-सी में प्रोटोकॉल क्या होते हैं और उनके कितने प्रकार मौजूद हैं?

ऑब्जेक्टिव-सी में, एक प्रोटोकॉल यह अन्य भाषाओं में इंटरफ़ेस के समान है। यह विधियों का एक समूह परिभाषित करता है जिसे कोई भी क्लास अपना सकता है और लागू कर सकता है, जिससे विधि हस्ताक्षरों (कार्यान्वयन नहीं) की एकाधिक विरासत संभव हो पाती है।

दो प्रकार हैं:

  • औपचारिक प्रोटोकॉल – घोषित किया गया @protocolपरिभाषित कर सकते हैं अपेक्षित और वैकल्पिक तरीकों.
  • अनौपचारिक प्रोटोकॉल – आमतौर पर श्रेणियों के रूप में लागू किया जाता है NSObjectडिजाइन के अनुसार वैकल्पिक।

उदाहरण: UIKit में डेलीगेशन पैटर्न अक्सर प्रोटोकॉल का उपयोग करते हैं (उदाहरण के लिए, UITableViewDelegate).


4) #import और #include में क्या अंतर है?

  • #include यह C प्रीप्रोसेसर निर्देश है जो एक फ़ाइल की सामग्री को दूसरी फ़ाइल में सम्मिलित करता है, जिससे समस्या उत्पन्न हो सकती है। एकाधिक समावेशन समस्याएं.
  • #import यह एक ऑब्जेक्टिव-सी निर्देश है जो यह सुनिश्चित करता है कि एक फ़ाइल केवल तभी शामिल की जाए एक बार, जिससे दोहराव से बचा जा सके।

इस प्रकार, #import Objective-C डेवलपमेंट में यह अधिक सुरक्षित और पसंदीदा तरीका है।


5) ऑब्जेक्टिव-सी में श्रेणियों का क्या उपयोग है?

श्रेणियाँ किसी मौजूदा वर्ग का विस्तार करती हैं सबक्लासिंग के बिना विधियों को जोड़ना या मूल कोड को संशोधित करना। वे आपको विधियों को तार्किक रूप से समूहों में अलग करने या फ्रेमवर्क क्लास में अतिरिक्त व्यवहार जोड़ने की अनुमति देते हैं। NSString.

उदाहरण उपयोग: उपयोगिता विधियों को जोड़ना NSArray बिना सबक्लासिंग के:

@interface NSArray (Utility)
- (NSArray *)reversedArray;
@end

6) @synthesize क्या करता है?

RSI @synthesize निर्देश कंपाइलर को बताता है कि गेटर और सेटर विधियों को उत्पन्न करें घोषित संपत्ति के लिए @propertyइससे एनकैप्सुलेशन लागू होता है और दोहराव वाले कोड की प्रक्रिया स्वचालित हो जाती है।

जबसे Xcode 4.4, स्व-संश्लेषण यह डिफ़ॉल्ट है — आपको अक्सर लिखने की आवश्यकता नहीं होती है @synthesize स्पष्ट रूप से।


7) ऑब्जेक्टिव-सी में मेमोरी मैनेजमेंट की व्याख्या कीजिए।

ऑब्जेक्टिव-सी का उपयोग करता है स्वचालित संदर्भ गणना (एआरसी) मेमोरी को प्रबंधित करने के लिए। ARC कंपाइलर-जनरेटेड रिटेन/रिलीज़ कॉल जोड़ता है जो यह सुनिश्चित करते हैं कि ऑब्जेक्ट आवश्यकतानुसार लंबे समय तक जीवित रहें और जब कोई संदर्भ शेष नहीं रहता तो इसे हटा दिया जाता है।.

महत्वपूर्ण अवधारणाएं:

  • मजबूत संदर्भ वस्तुओं को जीवित रखें
  • कमजोर संदर्भ ऑब्जेक्ट्स को रिटेन न करें, रिटेन साइकल से बचें

उदाहरण:

@property (strong, nonatomic) NSString *name;
@property (weak, nonatomic) id delegate;

8) NSArray और NSMutableArray में क्या अंतर है?

  • एनएसएरे: अपरिवर्तनीय ऐरे — निर्माण के बाद इसकी सामग्री नहीं बदल सकती।
  • एनएसम्यूटेबलएरे: परिवर्तनीय सरणी — इसमें तत्व जोड़े, हटाए या बदले जा सकते हैं।

उदाहरण:

NSMutableArray *list = [NSMutableArray arrayWithObjects:@"A", @"B", nil];
[list addObject:@"C"]; // Allowed

9) ऑब्जेक्टिव-सी में डेटा एनकैप्सुलेशन क्या है?

डेटा एनकैप्सुलेशन डेटा और उस पर काम करने वाले कार्यों को एक साथ बांधता है। एकल इकाई (वर्ग) साथ ही, क्लास के बाहर से सीधे एक्सेस को प्रतिबंधित किया जाता है। इससे मॉड्यूलरिटी, डेटा सुरक्षा और एब्स्ट्रैक्शन को बढ़ावा मिलता है।


10) ऑब्जेक्टिव-सी में मेथड कॉलिंग कैसे काम करती है?

ऑब्जेक्टिव-सी का उपयोग करता है संदेश देना वाक्य - विन्यास:

[object methodName];

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


11) ऑब्जेक्टिव-सी में स्ट्रॉन्ग, वीक, असाइन और कॉपी प्रॉपर्टीज के बीच अंतर स्पष्ट कीजिए।

Objective-C प्रॉपर्टीज़ यह परिभाषित करती हैं कि ऑब्जेक्ट संदर्भों के लिए मेमोरी का प्रबंधन कैसे किया जाता है, और सही एट्रीब्यूट का चयन एप्लिकेशन की स्थिरता के लिए महत्वपूर्ण है। strong एट्रिब्यूट किसी ऑब्जेक्ट के रेफरेंस काउंट को बढ़ाता है, जिससे यह सुनिश्चित होता है कि जब तक यह प्रॉपर्टी मौजूद है, ऑब्जेक्ट मेमोरी में बना रहे। इसका उपयोग आमतौर पर स्वामित्व संबंधों के लिए किया जाता है। weak एट्रिब्यूट ऑब्जेक्ट को बरकरार नहीं रखता है, स्वचालित रूप से संदर्भ सेट कर देता है। nil जब ऑब्जेक्ट को डीएलोकेट किया जाता है, तो यह रिटेन साइकल को रोकने में मदद करता है, खासकर डेलीगेट पैटर्न में।

RSI assign यह एट्रिब्यूट पूर्णांक और फ्लोट जैसे आदिम डेटा प्रकारों के लिए उपयोग किया जाता है। यह ऑब्जेक्ट्स को बरकरार नहीं रखता है और ARC के अंतर्गत Objective-C ऑब्जेक्ट्स के लिए इसका उपयोग नहीं किया जाना चाहिए। कॉपी एट्रिब्यूट एक ऑब्जेक्ट बनाता है। copy असाइन किए गए ऑब्जेक्ट का, जो विशेष रूप से परिवर्तनीय ऑब्जेक्ट जैसे के लिए महत्वपूर्ण है। NSMutableString अनपेक्षित संशोधन को रोकने के लिए।

विशेषता ऑब्जेक्ट को बरकरार रखता है उदाहरण
मजबूत हाँ स्वामित्व
कमज़ोर नहीं प्रतिनिधियों
आवंटित नहीं पुरातन
प्रतिलिपि प्रतियां अपरिवर्तनीय सुरक्षा

12) स्वचालित संदर्भ गणना (एआरसी) आंतरिक रूप से कैसे काम करती है?

ऑटोमैटिक रेफरेंस काउंटिंग (ARC) एक कंपाइल-टाइम मेमोरी मैनेजमेंट सिस्टम है जो रिटेन, रिलीज़ और ऑटो-रिलीज़ कॉल को स्वचालित रूप से सम्मिलित करता है। गार्बेज कलेक्शन के विपरीत, ARC रनटाइम पर नहीं चलता; इसके बजाय, कंपाइलर ऑब्जेक्ट लाइफसाइकल का विश्लेषण करता है और यह निर्धारित करता है कि मेमोरी मैनेजमेंट कॉल कहाँ आवश्यक हैं। यह डेवलपर के हस्तक्षेप के बिना कुशल मेमोरी उपयोग सुनिश्चित करता है।

ARC ऑब्जेक्ट्स के स्ट्रॉन्ग रेफरेंस को ट्रैक करता है और जब कोई स्ट्रॉन्ग रेफरेंस नहीं बचता है तो उन्हें डीएलोकेट कर देता है। ऑब्जेक्ट के डीएलोकेट होने पर वीक रेफरेंस अपने आप ज़ीरो हो जाते हैं, जिससे एप्लिकेशन की सुरक्षा बढ़ती है। ARC कोर को मैनेज नहीं करता है। Foundation वस्तुएं स्वचालित रूप से, इसलिए ब्रिजिंग तकनीकें जैसे कि __bridge और __bridge_transfer आवश्यक हैं.

उदाहरण के लिए, यदि दो ऑब्जेक्ट एक दूसरे को दृढ़ता से संदर्भित करते हैं, तो भी रिटेन चक्र हो सकते हैं, जिन्हें कमजोर संदर्भों का उपयोग करके हल किया जाना चाहिए।


13) ऑब्जेक्टिव-सी रनटाइम क्या है, और यह महत्वपूर्ण क्यों है?

Objective-C रनटाइम एक शक्तिशाली प्रणाली है जो Objective-C प्रोग्रामों में गतिशील व्यवहार को सक्षम बनाती है। यह संकलन समय के बजाय रनटाइम पर विधियों को हल करने की अनुमति देता है, जिससे गतिशील विधि प्रेषण, संदेश अग्रेषण और अंतर्विश्लेषण जैसी सुविधाएँ सक्षम होती हैं।

यह रनटाइम ऑब्जेक्टिव-सी को यह निर्धारित करने में सक्षम बनाता है कि संदेश भेजे जाने पर ही किस विधि को कॉल करना है। यदि विधि मौजूद नहीं है, तो रनटाइम इसे संभालने के कई अवसर प्रदान करता है, जैसे कि संदेश को किसी अन्य ऑब्जेक्ट को अग्रेषित करना। यह ऑब्जेक्टिव-सी को अत्यधिक लचीला और विस्तार योग्य बनाता है।

रनटाइम फ़ंक्शन डेवलपर्स को क्लास पदानुक्रम का निरीक्षण करने, गतिशील रूप से विधियाँ जोड़ने और विधि कार्यान्वयन को बदलने की अनुमति भी देते हैं, जिसका उपयोग आमतौर पर डिबगिंग और एनालिटिक्स फ्रेमवर्क में किया जाता है।


14) ऑब्जेक्टिव-सी में ब्लॉक क्या होते हैं, और उनके क्या फायदे हैं?

Objective-C में ब्लॉक एक प्रकार के क्लोज़र होते हैं जो बाद में निष्पादन के लिए कोड और वैरिएबल को समाहित करते हैं। ये अन्य प्रोग्रामिंग भाषाओं में लैम्डा एक्सप्रेशन के समान होते हैं और आमतौर पर कॉलबैक, अतुल्यकालिक निष्पादन और गणना के लिए उपयोग किए जाते हैं।

ब्लॉक अपने आस-पास के स्कोप से वैरिएबल कैप्चर करते हैं, जिन्हें संशोधित किया जा सकता है। __block कीवर्ड। ये कोड की पठनीयता को सरल बनाते हैं और कई स्थितियों में डेलीगेट पैटर्न की आवश्यकता को कम करते हैं।

ब्लॉक के लाभों में बेहतर कोड लोकैलिटी, बेहतर पठनीयता और अतुल्यकालिक प्रोग्रामिंग में आसानी शामिल हैं। हालांकि, डेवलपर्स को रिटेन साइकल के प्रति सतर्क रहना चाहिए जब ब्लॉक मजबूती से कैप्चर करते हैं। self। का उपयोग करते हुए __weak ब्लॉक के अंदर दिए गए संदर्भ मेमोरी लीक को रोकते हैं।


15) ऑब्जेक्टिव-सी में nil और NULL में क्या अंतर है?

ऑब्जेक्टिव-सी में, nil यह एक नल ऑब्जेक्ट पॉइंटर को दर्शाता है, जबकि NULL यह C टाइप के लिए नल पॉइंटर को दर्शाता है। हालांकि इनका मान अक्सर एक ही (शून्य) होता है, लेकिन ये अर्थ के हिसाब से अलग-अलग होते हैं और इनका उपयोग उचित तरीके से किया जाना चाहिए।

nil इसका उपयोग Objective-C ऑब्जेक्ट्स के लिए किया जाता है और यह एप्लिकेशन को क्रैश किए बिना सुरक्षित रूप से संदेश भेजने की अनुमति देता है। जब कोई संदेश भेजा जाता है nilयह बस शून्य लौटाता है या nilइसके विपरीत, किसी चीज़ को डीरेफरेंस करने से NULL C भाषा में पॉइंटर का उपयोग करने से अनिश्चित व्यवहार होता है और अक्सर एप्लिकेशन क्रैश हो जाता है।

का प्रयोग nil Objective-C ऑब्जेक्ट्स से निपटने के दौरान कोड की सुरक्षा और पठनीयता में सुधार होता है, जबकि NULL इसे C संरचनाओं और पॉइंटर्स के लिए आरक्षित रखा जाना चाहिए।


16) ऑब्जेक्टिव-सी में प्रतिनिधिमंडल को एक उदाहरण सहित समझाइए।

डेलीगेशन ऑब्जेक्टिव-सी में एक डिज़ाइन पैटर्न है जो एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट को इवेंट या निर्णय संप्रेषित करने की अनुमति देता है। इसे प्रोटोकॉल और वीक रेफरेंस का उपयोग करके लागू किया जाता है ताकि रिटेन साइकल से बचा जा सके। डेलीगेशन लूज़ कपलिंग और रियूज़ेबिलिटी को बढ़ावा देता है।

प्रतिनिधि वस्तु एक प्रोटोकॉल परिभाषित करती है, और प्रतिनिधि वस्तु उस प्रोटोकॉल को अपनाकर लागू करती है। इसके बाद, प्रतिनिधि वस्तु कुछ निश्चित घटनाओं के घटित होने पर अपने प्रतिनिधि पर मौजूद विधियों को कॉल करती है।

उदाहरण के लिए, एक टेबल व्यू किसी पंक्ति के चयन होने पर अपने डेलीगेट को सूचित करता है। यह डिज़ाइन सबक्लासिंग के बिना व्यवहार को अनुकूलित करने की अनुमति देता है और एप्पल फ्रेमवर्क में व्यापक रूप से उपयोग किया जाता है।


17) ऑब्जेक्टिव-सी में श्रेणियां और एक्सटेंशन क्या हैं?

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

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

इस अंतर को समझने से बेहतर क्लास डिजाइन और बेहतर रखरखाव सुनिश्चित होता है।


18) ऑब्जेक्टिव-सी में केवीसी (की-वैल्यू कोडिंग) कैसे काम करता है?

की-वैल्यू कोडिंग (केवीसी) स्ट्रिंग कुंजियों का उपयोग करके किसी ऑब्जेक्ट के गुणों तक अप्रत्यक्ष पहुंच की अनुमति देती है। यह गेटर या सेटर विधियों को स्पष्ट रूप से कॉल किए बिना गतिशील रूप से मानों को सेट और पुनर्प्राप्त करने में सक्षम बनाती है।

KVC का व्यापक रूप से कोकोआ बाइंडिंग और सीरियलाइज़ेशन फ्रेमवर्क में उपयोग किया जाता है। यह कुंजियों को हल करने के लिए एक सुस्पष्ट लुकअप पैटर्न पर निर्भर करता है और एरे और सेट के साथ काम करने के लिए कलेक्शन ऑपरेटरों का समर्थन करता है।

उदाहरण के लिए, valueForKey: मान को गतिशील रूप से पुनर्प्राप्त करता है, जबकि setValue:forKey: यह एक मान निर्दिष्ट करता है। गलत कुंजी के उपयोग से रनटाइम अपवाद उत्पन्न हो सकते हैं, इसलिए सावधानीपूर्वक सत्यापन आवश्यक है।


19) केवीओ (की-वैल्यू ऑब्जर्विंग) क्या है, और यह नोटिफिकेशन से कैसे अलग है?

की-वैल्यू ऑब्जर्विंग (KVO) ऑब्जेक्ट्स को दूसरे ऑब्जेक्ट की विशिष्ट प्रॉपर्टीज में होने वाले परिवर्तनों को ऑब्जर्व करने की अनुमति देता है। यह KVC से मजबूती से जुड़ा हुआ है और प्रॉपर्टी वैल्यू में परिवर्तन होने पर स्वचालित सूचनाएं प्रदान करता है।

नोटिफ़िकेशन के विपरीत, KVO बारीक और विशिष्ट गुणों पर आधारित होता है, जबकि नोटिफ़िकेशन प्रसारण-आधारित होते हैं। KVO में क्रैश से बचने के लिए ऑब्ज़र्वर को ठीक से हटाना आवश्यक होता है, जबकि नोटिफ़िकेशन अधिक लचीले ढंग से जुड़े होते हैं।

MVC आर्किटेक्चर में मॉडल परिवर्तनों का अवलोकन करने के लिए KVO आदर्श है, जबकि सिस्टम-व्यापी घटनाओं के लिए सूचनाएं अधिक उपयुक्त हैं।


20) आज के समय में ऑब्जेक्टिव-सी का उपयोग करने के क्या फायदे और नुकसान हैं?

Objective-C गतिशील रनटाइम सुविधाएँ, परिपक्व टूलिंग और पुराने Apple फ्रेमवर्क के साथ गहन एकीकरण प्रदान करता है। यह लचीले संदेश प्रबंधन की अनुमति देता है और अभी भी बड़े, परिपक्व कोडबेस में व्यापक रूप से उपयोग किया जाता है।

हालाँकि, ऑब्जेक्टिव-सी का सिंटैक्स जटिल है, इसे सीखना कठिन है, और इसे काफी हद तक अन्य भाषाओं से प्रतिस्थापित कर दिया गया है। Swift नए विकास के लिए। Swift यह बेहतर सुरक्षा, पठनीयता और प्रदर्शन अनुकूलन प्रदान करता है।

पहलू फायदे नुकसान
क्रम गतिशील जटिल
वाक्य - विन्यास शक्तिशाली वाचाल
पारिस्थितिकी तंत्र प्रौढ़ गोद लेने में गिरावट

21) ऑब्जेक्टिव-सी क्लास लाइफसाइकिल को आवंटन से विआवंटन तक समझाइए।

Objective-C ऑब्जेक्ट का जीवनचक्र मेमोरी आवंटन से शुरू होता है और डी-आवंटन पर समाप्त होता है। यह जीवनचक्र मुख्य रूप से ARC या पुराने सिस्टम में मैन्युअल संदर्भ गणना के माध्यम से प्रबंधित किया जाता है। प्रक्रिया शुरू होती है... allocयह ऑब्जेक्ट के लिए मेमोरी आवंटित करता है और इसके इंस्टेंस वेरिएबल्स को डिफ़ॉल्ट मानों पर इनिशियलाइज़ करता है। इसके बाद यह प्रक्रिया होती है: initजो प्रारंभिक स्थिति निर्धारित करके वस्तु को उपयोग के लिए तैयार करता है।

एक बार आरंभ होने के बाद, ऑब्जेक्ट तब तक सक्रिय रहता है जब तक कम से कम एक मजबूत संदर्भ मौजूद रहता है। अपने जीवनकाल के दौरान, ऑब्जेक्ट संदेश प्राप्त कर सकता है, प्रतिनिधिमंडल में भाग ले सकता है और अन्य ऑब्जेक्ट्स के साथ बातचीत कर सकता है। जब सभी मजबूत संदर्भ समाप्त हो जाते हैं, तो ARC स्वचालित रूप से कॉल करता है। deallocजहां सफाई संबंधी कार्य किए जाते हैं, जैसे कि पर्यवेक्षकों को हटाना या संसाधनों को मुक्त करना।

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


22) ऑब्जेक्टिव-सी में मैसेज फॉरवर्डिंग कैसे काम करती है?

संदेश अग्रेषण एक बहु-चरणीय तंत्र है जिसका उपयोग तब किया जाता है जब किसी ऑब्जेक्ट को ऐसा संदेश प्राप्त होता है जिसे वह संभाल नहीं सकता। तुरंत क्रैश होने के बजाय, ऑब्जेक्टिव-सी विधि को गतिशील रूप से हल करने के कई अवसर प्रदान करता है। सबसे पहले, रनटाइम जाँच करता है +resolveInstanceMethod: यह देखने के लिए कि क्या विधि को गतिशील रूप से जोड़ा जा सकता है। यदि इसका समाधान नहीं होता है, तो यह आगे बढ़ता है। -forwardingTargetForSelector: संदेश को किसी अन्य ऑब्जेक्ट पर पुनर्निर्देशित करने के लिए।

यदि वह विफल हो जाता है, तो रनटाइम इसे लागू करता है। -methodSignatureForSelector: और -forwardInvocation: संदेश को मैन्युअल रूप से अग्रेषित करने के लिए। यह प्रॉक्सी ऑब्जेक्ट, डेकोरेटर और डायनामिक व्यवहार को सक्षम बनाता है।

यह तंत्र ऑब्जेक्टिव-सी की लचीलता को उजागर करता है और आमतौर पर एनएसपीरोक्सी और मॉकिंग लाइब्रेरी जैसे फ्रेमवर्क में उपयोग किया जाता है।


23) रिटेन साइकल क्या होते हैं, और आप उन्हें कैसे रोक सकते हैं?

रिटेन साइकिल तब उत्पन्न होती है जब दो या दो से अधिक ऑब्जेक्ट एक दूसरे के लिए मजबूत संदर्भ रखते हैं, जिससे ARC उन्हें डीएलोकेट करने से रोकता है। इसके परिणामस्वरूप मेमोरी लीक होती है, भले ही ऑब्जेक्ट की अब आवश्यकता न हो। रिटेन साइकिल आमतौर पर पैरेंट और चाइल्ड ऑब्जेक्ट, डेलीगेट और ब्लॉक के बीच होती है। self.

रिटेन साइकल को रोकने के लिए, डेवलपर गैर-स्वामित्व संबंधों, जैसे कि डेलीगेट्स के लिए कमजोर संदर्भों का उपयोग करते हैं। ब्लॉक में, __weak or __unsafe_unretained को सन्दर्भित self इनका उपयोग तीव्र पकड़ से बचने के लिए किया जाता है।

इंस्ट्रूमेंट्स का उपयोग करके रिटेन साइकल की पहचान करना और स्वामित्व संबंधी अर्थों को सावधानीपूर्वक डिजाइन करना, लंबे समय तक चलने वाले अनुप्रयोगों पर काम करने वाले ऑब्जेक्टिव-सी डेवलपर्स के लिए महत्वपूर्ण कौशल हैं।


24) ऑब्जेक्टिव-सी समवर्तीता और मल्टीथ्रेडिंग को कैसे संभालता है?

Objective-C समवर्ती संचालन के लिए कई तंत्र प्रदान करता है, जिनमें ग्रैंड सेंट्रल डिस्पैच (GCD) सबसे व्यापक रूप से उपयोग किया जाता है। GCD डेवलपर्स को ऐसे कार्यों को कतारों में जमा करने की अनुमति देता है जो क्रमिक रूप से या समवर्ती रूप से निष्पादित होते हैं। यह थ्रेड प्रबंधन को सरल बनाता है, जिससे प्रदर्शन और सुरक्षा में सुधार होता है।

अन्य समवर्ती उपकरण में शामिल हैं NSThread, NSOperation, तथा NSOperationQueue। जबकि NSThread निम्न-स्तरीय नियंत्रण प्रदान करता है, NSOperationQueue यह निर्भरता प्रबंधन, रद्दीकरण और प्राथमिकता प्रबंधन प्रदान करता है।

प्रदर्शन की दृष्टि से महत्वपूर्ण कोड के लिए आमतौर पर जीसीडी को प्राथमिकता दी जाती है, जबकि NSOperationQueue यह जटिल वर्कफ़्लो के लिए उपयुक्त है जिसमें बारीक नियंत्रण की आवश्यकता होती है।


25) मेथड स्विज़लिंग क्या है, और इसका उपयोग कब किया जाना चाहिए?

मेथड स्विज़लिंग एक रनटाइम तकनीक है जो डेवलपर्स को दो मेथड्स के इम्प्लीमेंटेशन को आपस में बदलने की अनुमति देती है। यह ऑब्जेक्टिव-सी रनटाइम एपीआई का उपयोग करके किया जाता है और सबक्लासिंग या मूल सोर्स कोड को संशोधित किए बिना व्यवहार में बदलाव करने में सक्षम बनाता है।

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

प्रोडक्शन कोड में, कोड की स्थिरता बनाए रखने के लिए मेथड स्विज़लिंग को सावधानीपूर्वक प्रलेखित किया जाना चाहिए और इसे अच्छी तरह से परिभाषित उपयोग मामलों तक सीमित रखा जाना चाहिए।


26) ऑब्जेक्टिव-सी में शैलो कॉपी और डीप कॉपी के बीच अंतर स्पष्ट कीजिए।

शैलो कॉपी कंटेनर ऑब्जेक्ट की प्रतिकृति बनाती है, लेकिन उसमें मौजूद ऑब्जेक्ट्स की नहीं। मूल और प्रतिलिपि किए गए दोनों कंटेनर एक ही अंतर्निहित ऑब्जेक्ट्स को संदर्भित करते हैं। इसके विपरीत, डीप कॉपी कंटेनर और उसके भीतर मौजूद सभी नेस्टेड ऑब्जेक्ट्स की प्रतिकृति बनाती है, जिससे स्वतंत्र प्रतियां तैयार होती हैं।

Objective-C कलेक्शन क्लास आमतौर पर डिफ़ॉल्ट रूप से शैलो कॉपी करते हैं। डीप कॉपी के लिए स्पष्ट कार्यान्वयन की आवश्यकता होती है, अक्सर इसका उपयोग किया जाता है। NSCopying या मैन्युअल पुनरावृति।

कॉपी टाइप कंटेनर कॉपी किया गया कॉपी किए गए तत्व
उथला हाँ नहीं
गहरा हाँ हाँ

परिवर्तनीय डेटा संरचनाओं के साथ काम करते समय अनपेक्षित दुष्प्रभावों से बचने के लिए इस अंतर को समझना आवश्यक है।


27) ऑब्जेक्टिव-सी आत्मनिरीक्षण में किस प्रकार सहायक होता है?

Objective-C में इंट्रोस्पेक्शन ऑब्जेक्ट्स को रनटाइम पर अपनी संरचना और व्यवहार की जांच करने की अनुमति देता है। इसमें क्लास सदस्यता, मेथड की उपलब्धता और प्रोटोकॉल अनुरूपता की जांच शामिल है। जैसे मेथड isKindOfClass:, respondsToSelector:, तथा conformsToProtocol: आमतौर पर उपयोग किया जाता है।

आत्मनिरीक्षण से रक्षात्मक प्रोग्रामिंग और गतिशील व्यवहार अनुकूलन संभव हो पाता है। उदाहरण के लिए, कोई ऑब्जेक्ट किसी विधि को कॉल करने से पहले यह जांच कर सकता है कि क्या कोई अन्य ऑब्जेक्ट उस विधि को लागू करता है, जिससे रनटाइम सुरक्षा में सुधार होता है।

यह क्षमता विशेष रूप से शिथिल रूप से युग्मित प्रणालियों और प्लगइन-आधारित वास्तुकलाओं में उपयोगी है।


28) ऑब्जेक्टिव-सी में isEqual: और == के बीच क्या अंतर है?

RSI == यह ऑपरेटर मेमोरी एड्रेस की तुलना करता है, यह निर्धारित करने के लिए कि क्या दो संदर्भ एक ही ऑब्जेक्ट को इंगित करते हैं। isEqual: यह विधि वस्तुओं की सामग्री या तार्किक समानता की तुलना करती है।

उदाहरण के लिए, समान पाठ सामग्री वाले दो अलग-अलग स्ट्रिंग ऑब्जेक्ट एक ही प्रकार का परिणाम दे सकते हैं। NO तुलना करने पर ==, परंतु YES तुलना करने पर isEqual:. अनेक Foundation क्लासेस ओवरराइड isEqual: सार्थक समानता तुलना प्रदान करने के लिए।

तार्किक त्रुटियों से बचने के लिए सही तुलना विधि का चयन करना आवश्यक है, खासकर जब सेट और शब्दकोश जैसे संग्रहों के साथ काम कर रहे हों।


29) ऑब्जेक्टिव-सी, सी के साथ किस प्रकार एकीकृत होता है? C++ कोड?

Objective-C, C के साथ पूरी तरह से संगत है और इसके साथ परस्पर क्रिया कर सकता है। C++ उद्देश्य के माध्यम से-C++। का उपयोग करके .mm फ़ाइलों में, डेवलपर ऑब्जेक्टिव-सी और C++ एक ही स्रोत फ़ाइल के भीतर कोड।

यह एकीकरण मौजूदा C और C++ Objective-C की ऑब्जेक्ट-ओरिएंटेड विशेषताओं का लाभ उठाते हुए लाइब्रेरी का उपयोग किया जा सकता है। मेमोरी और संगतता संबंधी समस्याओं से बचने के लिए डेवलपर्स को नेम मैंगलिंग और ऑब्जेक्ट लाइफसाइकल को सावधानीपूर्वक प्रबंधित करना चाहिए।

उद्देश्य-C++ इसका उपयोग आमतौर पर गेम इंजन और मल्टीमीडिया प्रोसेसिंग जैसे प्रदर्शन-महत्वपूर्ण अनुप्रयोगों में किया जाता है।


30) आपको ऑब्जेक्टिव-सी को कब चुनना चाहिए? Swift आधुनिक विकास में?

बड़े लेगेसी कोडबेस को बनाए रखने, पुराने फ्रेमवर्क के साथ एकीकृत करने, या उन्नत रनटाइम सुविधाओं की आवश्यकता होने पर, जो आसानी से प्राप्त नहीं की जा सकती हैं, Objective-C अभी भी एक उपयुक्त विकल्प है। Swiftइसका डायनामिक मैसेजिंग सिस्टम और परिपक्व टूलिंग इसे कुछ निम्न-स्तरीय या फ्रेमवर्क-उन्मुख विकास कार्यों के लिए उपयुक्त बनाते हैं।

हालांकि, नई परियोजनाओं के लिए, Swift बेहतर सुरक्षा, सुगम पठनीयता और प्रदर्शन के कारण इसे आमतौर पर प्राथमिकता दी जाती है। यह निर्णय परियोजना की आवश्यकताओं, टीम की विशेषज्ञता और दीर्घकालिक रखरखाव क्षमता के आधार पर लिया जाना चाहिए।

Objective-C की अच्छी समझ होना महत्वपूर्ण बना हुआ है, खासकर उन उद्यमों में जहां पहले से ही Objective-C के व्यापक अनुप्रयोग मौजूद हैं।


🔍 ऑब्जेक्टिव-सी विषय पर आधारित शीर्ष साक्षात्कार प्रश्न, वास्तविक जीवन के परिदृश्यों और रणनीतिक उत्तरों के साथ

1) ऑब्जेक्टिव-सी और ऑब्जेक्टिव-सी के बीच मुख्य अंतर क्या हैं? Swiftऔर आप ऑब्जेक्टिव-सी को कब चुनेंगे?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता भाषा पारिस्थितिकी तंत्र के बारे में आपकी समझ और सूचित वास्तुशिल्प संबंधी निर्णय लेने की आपकी क्षमता का आकलन करना चाहता है।

उदाहरण उत्तर: Objective-C एक गतिशील, संदेश-आधारित भाषा है जिसमें मजबूत रनटाइम क्षमताएं हैं, जबकि Swift यह सुरक्षा, प्रदर्शन और आधुनिक सिंटैक्स पर ज़ोर देता है। बड़े पुराने iOS सिस्टम को बनाए रखने या विस्तारित करने के लिए मैं अभी भी Objective-C को ही चुनूंगा। macOS कोडबेस जहां पुनर्लेखन में Swift इससे अनावश्यक जोखिम या लागत उत्पन्न हो सकती है।


2) ARC के अंतर्गत Objective-C में मेमोरी प्रबंधन कैसे काम करता है?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता स्मृति प्रबंधन के मूलभूत सिद्धांतों और एआरसी द्वारा उन्हें सरल बनाने के तरीके के बारे में आपकी समझ का परीक्षण कर रहा है।

उदाहरण उत्तर: ARC के अंतर्गत, कंपाइलर कंपाइल समय पर स्वचालित रूप से रिटेन और रिलीज़ कॉल सम्मिलित करता है। डेवलपर्स को अभी भी वीक या असाइन रेफरेंस का उचित उपयोग करके स्ट्रॉन्ग रेफरेंस साइकल से बचना चाहिए, विशेष रूप से डेलीगेट पैटर्न और ब्लॉक के उपयोग में।


3) क्या आप मजबूत, कमजोर और असाइन गुणों के बीच अंतर समझा सकते हैं?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता यह सुनिश्चित करना चाहता है कि आप ऑब्जेक्ट ओनरशिप और लाइफसाइकिल मैनेजमेंट को समझते हैं।

उदाहरण उत्तर: स्ट्रॉन्ग प्रॉपर्टीज़ ऑब्जेक्ट को बनाए रखने की अवधि बढ़ाती हैं और ऑब्जेक्ट को जीवित रखती हैं। वीक प्रॉपर्टीज़ ऑब्जेक्ट को बनाए नहीं रखतीं और ऑब्जेक्ट के डीएलोकेट होने पर उन्हें निल मान दिया जाता है। असाइन का उपयोग आमतौर पर प्रिमिटिव टाइप के लिए किया जाता है और यह ऑब्जेक्ट के स्वामित्व को प्रबंधित नहीं करता है।


4) ऑब्जेक्टिव-सी एप्लिकेशन में किसी कठिन क्रैश को डीबग करने के दौरान के एक समय का वर्णन करें।

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता आपके समस्या-समाधान के दृष्टिकोण और डिबगिंग कौशल का मूल्यांकन कर रहा है।

उदाहरण उत्तर: अपनी पिछली भूमिका में, मैंने मल्टीथ्रेडेड वातावरण में ओवर-रिलीज़्ड ऑब्जेक्ट्स के कारण होने वाले बार-बार क्रैश को डीबग किया। मैंने डीएलोकेशन को ट्रैक करने के लिए ज़ॉम्बीज़ सक्षम इंस्ट्रूमेंट्स का उपयोग किया और एक गलत प्रॉपर्टी एट्रिब्यूट की पहचान की, जिसे ठीक करने के बाद समस्या हल हो गई।


5) ऑब्जेक्टिव-सी में श्रेणियां उपवर्गों से किस प्रकार भिन्न होती हैं?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता कोड के संगठन और विस्तारशीलता के बारे में आपकी समझ का आकलन करना चाहता है।

उदाहरण उत्तर: श्रेणियाँ सबक्लास बनाए बिना मौजूदा क्लास में मेथड जोड़ने की अनुमति देती हैं, जो कार्यक्षमता को मॉड्यूलर बनाने के लिए उपयोगी है। सबक्लास नई क्लास पदानुक्रम बनाते हैं और व्यवहार को ओवरराइड कर सकते हैं, लेकिन वे कपलिंग और जटिलता को बढ़ाते हैं।


6) ऑब्जेक्टिव-सी में ब्लॉक क्या होते हैं, और उनका सामान्यतः उपयोग कैसे किया जाता है?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता आधुनिक ऑब्जेक्टिव-सी पैटर्न से आपकी परिचितता की जांच कर रहा है।

उदाहरण उत्तर: ब्लॉक्स ऐसे क्लोज़र होते हैं जो कोड और कैप्चर किए गए वेरिएबल्स को समाहित करते हैं। इनका उपयोग आमतौर पर अतुल्यकालिक कॉलबैक, पूर्णता हैंडलर और गणना के लिए किया जाता है। स्वयं के लिए कमजोर संदर्भों का उपयोग करके रिटेन चक्रों से बचने का ध्यान रखना चाहिए।


7) आप ऑब्जेक्टिव-सी में थ्रेडिंग और कॉन्करेंसी को कैसे संभालेंगे?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता यह जानना चाहता है कि आप प्रदर्शन और जवाबदेही कैसे सुनिश्चित करते हैं।

उदाहरण उत्तर: पिछली नौकरी में, मैं बैकग्राउंड टास्क और यूआई अपडेट को मैनेज करने के लिए ग्रैंड सेंट्रल डिस्पैच पर काफी हद तक निर्भर था। डेटा की स्थिरता के लिए मैं सीरियल क्यू का इस्तेमाल करता था और परफॉर्मेंस के लिहाज से महत्वपूर्ण ऑपरेशन्स के लिए कॉन्करेंट क्यू का।


8) प्रतिनिधि पैटर्न और इसके लाभों की व्याख्या कीजिए।

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता आईओएस डेवलपमेंट में प्रचलित डिजाइन पैटर्न के बारे में आपकी समझ का परीक्षण कर रहा है।

उदाहरण उत्तर: डेलीगेट पैटर्न एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट से इवेंट या डेटा का संचार करने की अनुमति देता है, बिना किसी जटिल जुड़ाव के। यह कार्यों के पृथक्करण को बढ़ावा देता है और कोड को परीक्षण और रखरखाव में आसान बनाता है।


9) वर्णन कीजिए कि आप एक बड़े, पुराने ऑब्जेक्टिव-सी कोडबेस को कैसे रिफैक्टर करेंगे।

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता आपकी रणनीतिक सोच और पुराने सिस्टमों के साथ आपके अनुभव का मूल्यांकन कर रहा है।

उदाहरण उत्तर: अपनी पिछली भूमिका में, मैंने कोड को धीरे-धीरे रीफैक्टर करने का तरीका अपनाया, जिसमें पहले यूनिट टेस्ट जोड़ना, महत्वपूर्ण घटकों को अलग करना और कोड की पठनीयता में सुधार करना शामिल था। मैंने बड़े पैमाने पर कोड को दोबारा लिखने से परहेज किया और समय के साथ तकनीकी खामियों को सुरक्षित रूप से कम करने पर ध्यान केंद्रित किया।


10) ऑब्जेक्टिव-सी प्रोजेक्ट्स में आप कोड की गुणवत्ता और रखरखाव क्षमता कैसे सुनिश्चित करते हैं?

उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता आपकी इंजीनियरिंग दक्षता और टीम वर्क के बारे में जानकारी प्राप्त करना चाहता है।

उदाहरण उत्तर: अपनी पिछली नौकरी में, मैंने सुसंगत कोडिंग मानकों, गहन कोड समीक्षा और दस्तावेज़ीकरण पर ज़ोर दिया। मैंने पुन: प्रयोज्य घटकों को लिखने और समस्याओं को जल्द पकड़ने के लिए स्थैतिक विश्लेषण उपकरणों का उपयोग करने को भी प्रोत्साहित किया।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: