Swift को Objective-C से जोड़ना
स्वतः निर्मित Objective-C जनरेटेड हेडर के माध्यम से Swift कोड को Objective-C से सुलभ बनाना सीखें
Swift को Objective-C से जोड़ना, CoddyKit पर विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Swift से Obj-C: ब्रिज
स्वागत है! मिश्रित-भाषा प्रोजेक्ट में आपको अक्सर Swift कोड और Objective-C कोड के बीच संवाद कराने की आवश्यकता होती है। इस पाठ में आपकी आधुनिक Swift क्लास और मेथड को पुरानी Objective-C फ़ाइलों के लिए उपलब्ध कराने पर ध्यान दिया गया है।
यह "ब्रिजिंग" आपको मौजूदा Objective-C कोडबेस में धीरे-धीरे Swift शामिल करने या अपने ऐप के अलग-अलग हिस्से अलग-अलग भाषाओं में लिखने की सुविधा देती है।
अपने-आप बनाया गया हेडर
जब आप किसी Objective-C प्रोजेक्ट में Swift फ़ाइलें जोड़ते हैं, तो Xcode आपके लिए अपने-आप एक विशेष हेडर फ़ाइल बनाता है। इसका नाम ProductModuleName-Swift.h होता है।
यह हेडर अनुवादक की तरह काम करता है और आपके Swift कोड को Objective-C की दुनिया के लिए उपलब्ध कराता है। इसे आप स्वयं नहीं बनाते; Xcode सारा काम करता है! आपको बस इसे आयात करना होता है।
Swift क्लास को उपलब्ध कराना
किसी Objective-C फ़ाइल के लिए Swift क्लास को "देखना" संभव बनाने हेतु उस Swift क्लास को NSObject से इनहेरिट करना आवश्यक है। यह Objective-C संगतता की मूलभूत आवश्यकता है।
NSObject से इनहेरिट किए बिना आपकी Swift क्लास अपने-आप बनाए गए ब्रिजिंग हेडर में दिखाई नहीं देगी।
दृश्यता के लिए @objc का उपयोग
@objc एट्रिब्यूट किसी Swift घोषणा (क्लास, मेथड, प्रॉपर्टी, इनिशियलाइज़र) को स्पष्ट रूप से Objective-C के लिए उपलब्ध चिह्नित करता है।
NSObjectसे इनहेरिट करने वाली औरfinalन होने वाली क्लास अपने सदस्यों को अपने-आप उपलब्ध कराती हैं।- यदि आपकी क्लास
NSObjectसे इनहेरिट नहीं करती (जैसे किसी प्रोटोकॉल के माध्यम से), या किसी प्रॉपर्टी/मेथड को KVC/KVO संगतता चाहिए, तो आपको विशिष्ट सदस्यों के लिए@objcकी आवश्यकता हो सकती है।
एक सरल Swift क्लास
यहाँ MySwiftGreeter नाम की एक Swift क्लास है, जो NSObject से इनहेरिट करती है। इसकी name प्रॉपर्टी और greet() मेथड Objective-C के लिए अपने-आप उपलब्ध हो जाएँगे।
हम Objective-C नाम निर्दिष्ट करने के लिए वैकल्पिक रूप से @objc(MySwiftGreeter) का उपयोग कर सकते हैं, हालांकि अक्सर नाम का अनुमान अपने-आप लगा लिया जाता है।
import Foundation
class MySwiftGreeter: NSObject {
@objc var name: String
@objc init(name: String) {
self.name = name
super.init()
}
@objc func greet() -> String {
return "Hello from Swift, \(name)!"
}
}Swift हेडर आयात करना
Objective-C फ़ाइल में अपनी Swift क्लास का उपयोग करने के लिए आपको केवल अपने-आप बनाए गए ब्रिजिंग हेडर को आयात करना होगा। ProductModuleName को अपने प्रोजेक्ट के वास्तविक मॉड्यूल नाम से बदलें।
यह आयात आपकी Objective-C .m कार्यान्वयन फ़ाइल में होना चाहिए, .h हेडर फ़ाइल में नहीं, ताकि चक्रीय निर्भरताओं और अनावश्यक रूप से कोड उपलब्ध कराने से बचा जा सके।
// In MyObjectiveCFile.m
#import "YourProjectName-Swift.h"
// Now you can use MySwiftGreeter
// ...Obj-C में Swift का उपयोग
ब्रिजिंग हेडर आयात किए जाने के बाद, आपका Objective-C कोड Swift क्लास के इंस्टेंस बना सकता है और उनकी उपलब्ध प्रॉपर्टी व मेथड के साथ उसी तरह काम कर सकता है जैसे किसी अन्य Objective-C ऑब्जेक्ट के साथ।
ध्यान दें: यह कोड अंश दिखाता है कि यह किसी प्रोजेक्ट में कैसा दिखाई देगा। इसे सीधे चलाने के लिए Swift और Objective-C दोनों फ़ाइलों वाला पूरा Xcode प्रोजेक्ट सेटअप आवश्यक है।
#import <Foundation/Foundation.h>
#import "MyProjectName-Swift.h" // Your project's auto-generated header
int main(int argc, const char * argv[]) {
@autoreleasepool {
// Create an instance of the Swift class
MySwiftGreeter *greeter = [[MySwiftGreeter alloc] initWithName:@"Coddy"];
// Call a method on the Swift object
NSString *greeting = [greeter greet];
NSLog(@"%@", greeting);
// Access a property
NSLog(@"Greeter's name: %@", greeter.name);
}
return 0;
}Swift और Obj-C टाइप मैप
ब्रिजिंग के दौरान Swift टाइप अपने सबसे निकट के Objective-C समकक्षों में अपने-आप मैप हो जाते हैं:
- Swift
Stringका मैपNSString*में होता है - Swift
Int,Double,Boolका मैपNSNumber*में होता है - Swift
Arrayका मैपNSArray*में होता है - Swift
Dictionaryका मैपNSDictionary*में होता है
इससे दोनों भाषाओं के बीच डेटा का सहज आदान-प्रदान संभव होता है।
Obj-C नामों को अनुकूलित करना
कभी-कभी किसी क्लास या मेथड के लिए Swift द्वारा अनुमानित Objective-C नाम उपयुक्त नहीं होता या किसी अन्य नाम से टकरा सकता है। आप @objc(NewName) का उपयोग करके कस्टम Objective-C नाम दे सकते हैं।
यह विशेष रूप से तब उपयोगी है जब आपको मौजूदा Objective-C नामकरण नियमों से मेल बैठाना हो या मौजूदा Objective-C सिंबल से टकराव से बचना हो।
import Foundation
@objc(LegacyGreeter) // Renames MySwiftGreeter to LegacyGreeter for Obj-C
class MySwiftGreeter: NSObject {
@objc var name: String
@objc(initWithPersonName:) // Custom name for initializer
init(name: String) {
self.name = name
super.init()
}
@objc(sayHello) // Custom name for method
func greet() -> String {
return "Hello from Swift, \(name)!"
}
}ब्रिजिंग की सीमाएँ
Swift की सभी सुविधाएँ सीधे Objective-C के लिए उपलब्ध नहीं कराई जा सकतीं। इन सीमाओं को ध्यान में रखें:
- Swift स्ट्रक्चर और एनम: जब तक उनमें रॉ वैल्यू न हों और वे
@objcके अनुरूप न हों, वे सीधे दिखाई नहीं देते। - जेनेरिक: Swift जेनेरिक उपलब्ध नहीं कराए जाते।
- ग्लोबल फ़ंक्शन: केवल
NSObject-से-व्युत्पन्न क्लास के अंदर के मेथड ब्रिज किए जाते हैं। - टपल: Swift टपल का कोई Objective-C समकक्ष नहीं है।
उन क्लास, मेथड और प्रॉपर्टी पर ध्यान दें जो Objective-C के ऑब्जेक्ट मॉडल के अनुरूप हों।
ब्रिजिंग ज्ञान जाँच
अपने-आप बनाए गए ब्रिजिंग हेडर के माध्यम से किसी Swift क्लास को Objective-C कोड से उपलब्ध कराने के लिए निम्न में से क्या REQUIRED है?
Swift को Obj-C से जोड़ना
आपने अपने Swift कोड को Objective-C के लिए उपलब्ध कराना सीख लिया है! मुख्य बातें:
- Xcode
ProductModuleName-Swift.hहेडर बनाता है। - Objective-C द्वारा देखे जाने के लिए Swift क्लास को
NSObjectसे इनहेरिट करना आवश्यक है। @objcएट्रिब्यूट सदस्यों को स्पष्ट रूप से उपलब्ध कराता है या उनका नाम बदलता है।String,ArrayऔरDictionaryजैसे Swift टाइप अपनेNSसमकक्षों में अपने-आप मैप हो जाते हैं।
मिश्रित-भाषा वाले iOS प्रोजेक्ट को बनाए रखने और विकसित करने के लिए यह ब्रिजिंग अत्यंत महत्वपूर्ण है!
एआई शिक्षक के साथ Objective-C सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “Swift को Objective-C से जोड़ना” पाठ निःशुल्क है?
हाँ—“Swift को Objective-C से जोड़ना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Swift को Objective-C से जोड़ना” में मैं क्या सीखूँगा?
स्वतः निर्मित Objective-C जनरेटेड हेडर के माध्यम से Swift कोड को Objective-C से सुलभ बनाना सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Swift को Objective-C से जोड़ना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर विरासत और एंटरप्राइज़ ऐप्स के लिए Objective-C iOS विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Objective-C को Swift से जोड़ना
- Swift को Objective-C से जोड़ना
- Objective-C फ़्रेमवर्क बनाना
- ब्रिज के पार अशून्यता और प्रकार मानचित्रण संभालना