সুইফটে, কীভাবে একজন অবজেক্টিভ-সি কোড কল করে?
অ্যাপল উল্লেখ করেছে যে তারা একটি প্রয়োগে সহ-অস্তিত্ব থাকতে পারে, তবে এর অর্থ কি এই যে সুইচটে নতুন ক্লাস নির্মাণের সময় অবজেক্টিভ সি-তে তৈরি পুরানো শ্রেণিগুলি প্রযুক্তিগতভাবে পুনরায় ব্যবহার করতে পারে?
সুইফটে, কীভাবে একজন অবজেক্টিভ-সি কোড কল করে?
অ্যাপল উল্লেখ করেছে যে তারা একটি প্রয়োগে সহ-অস্তিত্ব থাকতে পারে, তবে এর অর্থ কি এই যে সুইচটে নতুন ক্লাস নির্মাণের সময় অবজেক্টিভ সি-তে তৈরি পুরানো শ্রেণিগুলি প্রযুক্তিগতভাবে পুনরায় ব্যবহার করতে পারে?
উত্তর:
আপনি যদি ব্যবহার করতে চান এমন কোনও বিদ্যমান শ্রেণি থাকে তবে পদক্ষেপ 2 সম্পাদন করুন এবং তারপরে পদক্ষেপ 5 এ যান । (কিছু ক্ষেত্রে, আমাকে
#import <Foundation/Foundation.h
একটি পুরানো উদ্দেশ্য-সি ফাইলে একটি স্পষ্ট যোগ করতে হয়েছিল))
.m
আপনার ক্লাসে একটি ফাইল যুক্ত করুন এবং নাম দিন CustomObject.m
।
আপনার .m
ফাইল যুক্ত করার সময়, সম্ভবত আপনাকে এমন একটি প্রম্পট দিয়ে আঘাত করা হবে:
হ্যাঁ ক্লিক করুন !
আপনি যদি প্রম্পটটি না দেখেন বা দুর্ঘটনাক্রমে আপনার ব্রিজিং শিরোনামটি মুছে ফেলে থাকেন তবে .h
আপনার প্রকল্পে একটি নতুন ফাইল যুক্ত করুন এবং নাম দিন <#YourProjectName#>-Bridging-Header.h
।
কিছু পরিস্থিতিতে, বিশেষত অবজেক্টিভ-সি ফ্রেমওয়ার্কগুলির সাথে কাজ করার সময়, আপনি স্পষ্টভাবে একটি উদ্দেশ্য-সি ক্লাস যুক্ত করবেন না এবং এক্সকোড লিঙ্কারটি খুঁজে পাবে না। এই ক্ষেত্রে, .h
উপরে উল্লিখিত হিসাবে আপনার ফাইলটি তৈরি করুন , তারপরে নিশ্চিত হয়ে নিন যে আপনি আপনার টার্গেটের প্রকল্পের সেটিংসে এর পথটি লিঙ্ক করেছেন:
বিঃদ্রঃ:
আপনার প্রকল্পটি $(SRCROOT)
ম্যাক্রো ব্যবহার করে সংযুক্ত করার পক্ষে সর্বোত্তম অনুশীলন যাতে আপনি যদি আপনার প্রকল্পটি সরিয়ে নিয়ে যান বা অন্যের সাথে এটি রিমোট রিপোজিটরি ব্যবহার করে কাজ করেন তবে এটি এখনও কার্যকর হবে। $(SRCROOT)
আপনার .xcodeproj ফাইল রয়েছে এমন ডিরেক্টরি হিসাবে ভাবা যেতে পারে। এটি দেখতে এটির মতো দেখাবে:
$(SRCROOT)/Folder/Folder/<#YourProjectName#>-Bridging-Header.h
অন্য একটি .h
ফাইল যুক্ত করুন এবং নাম দিন CustomObject.h
।
ভিতরে CustomObject.h
#import <Foundation/Foundation.h>
@interface CustomObject : NSObject
@property (strong, nonatomic) id someProperty;
- (void) someMethod;
@end
ভিতরে CustomObject.m
#import "CustomObject.h"
@implementation CustomObject
- (void) someMethod {
NSLog(@"SomeMethod Ran");
}
@end
ইন YourProject-Bridging-Header.h
:
#import "CustomObject.h"
ইন SomeSwiftFile.swift
:
var instanceOfCustomObject = CustomObject()
instanceOfCustomObject.someProperty = "Hello World"
print(instanceOfCustomObject.someProperty)
instanceOfCustomObject.someMethod()
সুস্পষ্টভাবে আমদানি করার দরকার নেই; ব্রিজিং শিরোলেখ এটিই।
.swift
আপনার প্রকল্পে একটি ফাইল যুক্ত করুন এবং নাম দিন MySwiftObject.swift
।
ইন MySwiftObject.swift
:
import Foundation
@objc(MySwiftObject)
class MySwiftObject : NSObject {
@objc
var someProperty: AnyObject = "Some Initializer Val" as NSString
init() {}
@objc
func someFunction(someArg: Any) -> NSString {
return "You sent me \(someArg)"
}
}
ইন SomeRandomClass.m
:
#import "<#YourProjectName#>-Swift.h"
ফাইলটি: <#YourProjectName#>-Swift.h
ইতিমধ্যে আপনার প্রকল্পে স্বয়ংক্রিয়ভাবে তৈরি করা উচিত, আপনি এটি দেখতে না পারলেও।
MySwiftObject * myOb = [MySwiftObject new];
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
myOb.someProperty = @"Hello World";
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
NSString * retString = [myOb someFunctionWithSomeArg:@"Arg"];
NSLog(@"RetString: %@", retString);
কোড কমপ্লিটেশন আপনার প্রত্যাশা অনুযায়ী আচরণ না করলে এক্সকোডকে ⌘⇧Rএকটি সুইফ্ট প্রসঙ্গে এবং এর বিপরীতে কিছু উদ্দেশ্য-সি কোড খুঁজে পেতে সহায়তা করার জন্য একটি দ্রুত বিল্ড চালানোর চেষ্টা করুন ।
আপনি যদি .swift
কোনও পুরানো প্রকল্পে একটি ফাইল যুক্ত করেন এবং ত্রুটিটি পান তবে এক্সকোডটিdyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
সম্পূর্ণ পুনরায় চালু করার চেষ্টা করুন ।
প্রিফিক্সটি NSObject
ব্যবহার করে অবজেক্টিভ-সি-তে দৃশ্যমান খাঁটি সুইফ্ট ক্লাসগুলি (এর বংশধর নয় ) ব্যবহার করা প্রাথমিকভাবে সম্ভব ছিল @objc
, এটি আর সম্ভব নয়। এখন, অবজেক্টিভ-সিতে দৃশ্যমান হওয়ার জন্য, সুইফট অবজেক্টটি হয় অবশ্যই মানানসই একটি শ্রেণি হতে হবে NSObjectProtocol
(এটি করার সহজতম উপায় হ'ল উত্তরাধিকারসূত্রে প্রাপ্ত হওয়া NSObject
), বা কোনও সংখ্যার মতো কাঁচা মান সহ enum
চিহ্নিত হওয়া উচিত । আপনি এই বিধিনিষেধ ছাড়াই সুইফট 1.x কোডের উদাহরণের জন্য সম্পাদনা ইতিহাস দেখতে পারেন ।@objc
Int
@objc
সুইজার উইথ কোকো এবং অবজেক্টিভ-সি ব্যবহারের জন্য অ্যাপলের গাইড দেখুন । এই গাইডটিতে কীভাবে সুইফট এবং তদ্বিপরীত থেকে ওজেক্টিভ-সি এবং সি কোড ব্যবহার করতে হবে এবং কোনও প্রকল্পকে কীভাবে রূপান্তর করতে হবে বা বিদ্যমান প্রকল্পে অবজেক্টিভ-সি / সি এবং সুইফট অংশগুলি কীভাবে মিশ্রিত করতে হবে এবং কীভাবে মিলিত করতে হবে তার জন্য প্রস্তাবনা রয়েছে।
সংকলক স্বয়ংক্রিয়ভাবে সি ফাংশন এবং উদ্দেশ্য-সি পদ্ধতিতে কল করার জন্য সুইফট বাক্য গঠন তৈরি করে। ডকুমেন্টেশনে দেখা গেছে, এই উদ্দেশ্য-সি:
UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
এই সুইফট কোডে পরিণত হয়:
let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)
এক্সকোড ফ্লাইতেও এই অনুবাদটি করে - আপনি একটি সুইফ্ট ফাইল সম্পাদনা করার সময় দ্রুত ওপেন ব্যবহার করতে পারেন এবং একটি উদ্দেশ্য-সি শ্রেণীর নাম টাইপ করতে পারেন এবং এটি আপনাকে ক্লাস শিরোলেখের একটি সুইফ্ট-আইফাইড সংস্করণে নিয়ে যাবে। (আপনি এটি একটি সুইফ্ট ফাইলে একটি এপিআই চিহ্নে সিএমডি -ক্লিক করেও পেতে পারেন)) এবং আইওএস 8 এবং ওএস এক্স ভি 10.10 (যোসমেট) বিকাশকারী লাইব্রেরিতে সমস্ত এপিআই রেফারেন্স ডকুমেন্টেশন ওজেক্টিভ -সি এবং সুইফট উভয়তেই দৃশ্যমান is রূপগুলি (যেমন UIView
)।
সুইফট প্রকল্পে অবজেক্টিভ সি কোড ব্যবহারের জন্য এখানে ধাপে ধাপে নির্দেশাবলী দেওয়া হয়েছে (এক্ষেত্রে তৃতীয় পক্ষের দেওয়া ফ্রেমওয়ার্ক)
সাধারণ পদক্ষেপে:
একটি প্রম্পট উপস্থিত হবে এবং তারপরে ওকে ক্লিক করুন ... যদি এটি উপস্থিত না হয়, তবে আমরা নীচের মতো এটি নিজেই তৈরি করি ... আইওএস উত্স থেকে একটি শিরোনাম ফাইল তৈরি করুন এবং প্রজেক্টনাম-ব্রিজিং-শিরোনাম নাম দিন (উদাহরণ: পরীক্ষা -ব্রীজিং-শিরোনাম) এবং তারপরে সুইফ্ট সংকলক কোডে সেটিং তৈরি করতে যান -> উদ্দেশ্য-সি ব্রিজটি উদ্দেশ্য-সি ব্রিজের নাম যুক্ত করুন (পরীক্ষা / পরীক্ষা-ব্রিজিং-শিরোনাম।)। হ্যাঁ, এটি সম্পূর্ণ।
Allyচ্ছিকভাবে, ওপেনটিভ-সি ফাইলটি আপনি জুড়েছেন (উপরের জিআইএফ চিত্রটিতে "কিছু" নাম দেওয়া হয়েছে) মুছুন। আপনার আর দরকার নেই।
ব্রিজিং শিরোলেখ ফাইলটি খুলুন - ফাইলের নামটি [আপনার প্রজেক্ট] -ব্রীজিং-শিরোনাম । H ফর্মের । এটিতে একটি এক্সকোড-সরবরাহিত মন্তব্য অন্তর্ভুক্ত। তৃতীয় পক্ষের কাঠামোর মতো আপনি অন্তর্ভুক্ত করতে চাইলে অবজেক্টিভ-সি ফাইলের জন্য কোডের একটি লাইন যুক্ত করুন । উদাহরণস্বরূপ, আপনার প্রকল্পে মিক্সপ্যানেল যুক্ত করতে, আপনাকে ব্রিজিং হেডার ফাইলে নিম্নলিখিত কোডের লাইন যুক্ত করতে হবে:
# মিম্পোর্ট
এখন যে কোনও সুইফ্ট ফাইলে আপনি বিদ্যমান অবজেক্টিভ সি কোড ব্যবহার করতে পারেন, সুইফট সিনট্যাক্সে (এই উদাহরণের ক্ষেত্রে, এবং আপনি মিক্সপ্যানেল এসডিকে পদ্ধতিগুলি কল করতে পারেন)। এক্সকোড কীভাবে উদ্দেশ্য-সিটিকে সুইফটে অনুবাদ করে তা আপনাকে নিজের সাথে পরিচিত করতে হবে। অ্যাপলের গাইডটি দ্রুত পঠনযোগ্য। অথবা অসম্পূর্ণ সংক্ষিপ্তসার জন্য এই উত্তরটি দেখুন।
মিক্সপ্যানেলের উদাহরণ:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Mixpanel.sharedInstanceWithToken("your-token")
return true
}
এটাই!
দ্রষ্টব্য: আপনি যদি আপনার প্রকল্প থেকে ব্রিজিং শিরোলেখ ফাইলটি সরিয়ে থাকেন তবে বিল্ড সেটিংসে যান এবং "সুইফ্ট কম্পাইলার - কোড জেনারেশন" এর অধীনে " উদ্দেশ্য-সি ব্রিজিং শিরোনাম " এর মানটি সরিয়ে ফেলার বিষয়ে নিশ্চিত হন ।
আপনি সুন্দর পোস্ট সুইফট এবং কোকোপডগুলি পড়তে পারেন । মূলত, আমাদের একটি ব্রিজিং শিরোলেখ ফাইল তৈরি করতে হবে এবং সমস্ত উদ্দেশ্য-সি শিরোনাম সেখানে রাখা উচিত there এবং তারপরে আমাদের এটিকে আমাদের বিল্ড সেটিংস থেকে উল্লেখ করতে হবে। এর পরে, আমরা উদ্দেশ্য-সি কোডটি ব্যবহার করতে পারি।
let manager = AFHTTPRequestOperationManager()
manager.GET(
"http://example.com/resources.json",
parameters: nil,
success: { (operation: AFHTTPRequestOperation!,
responseObject: AnyObject!) in
println("JSON: " + responseObject.description)
},
failure: { (operation: AFHTTPRequestOperation!,
error: NSError!) in
println("Error: " + error.localizedDescription)
})
পাশাপাশি অ্যাপল এর নথিটি দেখুন যা সুইচ উইথ কোকো এবং অবজেক্টিভ-সি ব্যবহার করে ।
আমি একটি সাধারণ এক্সকোড 6 প্রকল্প লিখেছিলাম যা দেখায় কীভাবে সি ++, উদ্দেশ্য-সি এবং সুইফট কোডটি মিশ্রিত করতে হবে:
https://github.com/romitagl/shared/tree/master/C-ObjC-Swift/Performance_Console
বিশেষত, উদাহরণটি একটি উদ্দেশ্য-সি এবং সুইফট থেকে একটি সি ++ ফাংশন বলে ।
কীটি হ'ল একটি ভাগ করা শিরোনাম, প্রজেক্ট-ব্রিজিং-শিরোলেখ তৈরি করুন এবং সেখানে উদ্দেশ্য-সি শিরোনাম স্থাপন করুন।
প্রকল্পটি সম্পূর্ণ উদাহরণ হিসাবে ডাউনলোড করুন।
আমি @ লোগানের উত্তরের জন্য খুব কৃতজ্ঞ এটি ব্রিজ ফাইল এবং সেটআপগুলি তৈরি করতে অনেক সহায়তা করে।
তবে এই সমস্ত পদক্ষেপগুলি করার পরেও আমি সুইফটে একটি উদ্দেশ্য-সি ক্লাস পাচ্ছি না।
আমি cocoapods
গ্রন্থাগারটি ব্যবহার করেছি এবং এটি আমার প্রকল্পে সংহত করেছি। যা হয় pod "pop"
।
সুতরাং আপনি যদি সুইফটে অবজেক্টিভ-সি পোড ব্যবহার করছেন তবে এমন একটি সুযোগ থাকতে পারে যা আপনি পেতে সক্ষম নন বা import
সুইফটে ক্লাস ।
আপনার যা করতে হবে তা হ'ল:
<YOUR-PROJECT>-Bridging-Header
ফাইল এবং#import <ObjC_Framework>
করতে@import ObjC_Framework
উদাহরণস্বরূপ: (পপ লাইব্রেরি)
প্রতিস্থাপন করা
#import <pop/POP.h>
সঙ্গে
@import pop;
clang import
যখন #import
কাজ করছে না তখন ব্যবহার করুন ।
ডকুমেন্টেশন থেকে উদ্ধৃতি :
মডিউল হিসাবে অ্যাক্সেসযোগ্য যে কোনও উদ্দেশ্য-সি কাঠামো (বা সি লাইব্রেরি) সরাসরি সুইফটে আমদানি করা যায়। এটিতে অবজেক্টিভ-সি সিস্টেমের ফ্রেমওয়ার্কগুলি যেমন- ফাউন্ডেশন, ইউআইকিট এবং স্প্রিটকিট — পাশাপাশি সিস্টেমের সাথে সরবরাহ করা সাধারণ সি লাইব্রেরি অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, ফাউন্ডেশন আমদানি করতে, আপনি যে সুইফট ফাইলটিতে কাজ করছেন তার উপরে এই আমদানি বিবৃতিটি কেবল যুক্ত করুন:
import Foundation
এই আমদানিটি NSDate, NSURL, NSMutableData এবং তাদের সমস্ত পদ্ধতি, বৈশিষ্ট্য এবং বিভাগগুলি সহ সমস্ত ফাউন্ডেশন এপিআইগুলিকে সুইফটে সরাসরি উপলভ্য করে তোলে।
শুধু যে কেহ সুইফট একটি উদ্দেশ্য সি গ্রন্থাগার যোগ করার জন্য চেষ্টা করছে একটি নোট: আপনি যোগ করা উচিত -ObjC মধ্যে সেটিং বিল্ড -> লিঙ্ক -> অন্যান্য Linker পতাকা ।
আপনি একটি ব্রিজিং শিরোলেখ তৈরি করার পরে, বিল্ড সেটিং => "উদ্দেশ্য-সি ব্রিজিং শিরোলেখ" অনুসন্ধান করুন।
ঠিক নীচে আপনি "" উদ্দেশ্য-সি উত্পন্ন ইন্টারফেস শিরোনামের নাম "ফাইলটি পাবেন।
আপনার ভিউ কন্ট্রোলারে সেই ফাইলটি আমদানি করুন।
উদাহরণ: আমার ক্ষেত্রে: "ডাবল-সুইফট এইচ"
নতুন ক্লিক করুন ফাইল মেনুতে , এবং ফাইল নির্বাচন ভাষা উদ্দেশ্য নির্বাচন করুন। সেই সময় এটি স্বয়ংক্রিয়ভাবে একটি "উদ্দেশ্য-সি সেতু শিরোনাম" ফাইল উত্পন্ন করে যা কিছু শ্রেণীর নাম সংজ্ঞায়িত করতে ব্যবহৃত হয়।
"সুইফ্ট সংকলক - কোড উত্পন্নকরণ" এর অধীনে "উদ্দেশ্য-সি ব্রিজিং শিরোলেখ"।
এক্সকোড 10.1-এ সুইচ 4.2.1 প্রকল্পে আপনি সহজেই উদ্দেশ্য-সি ফাইল যুক্ত করতে পারেন। সুইফট প্রকল্পে অবজেক্টিভ-সি ফাইল ব্রিজ করতে নীচের পদক্ষেপগুলি অনুসরণ করুন।
পদক্ষেপ_01: সুইফট ভাষা ব্যবহার করে নতুন এক্সকোড প্রকল্প তৈরি করুন:
File
> New
> Project
> objc
।
পদক্ষেপ_02: সুইফ্ট প্রকল্পে নতুন উদ্দেশ্য-সি ফাইল যুক্ত করুন:
File
> New
> File...
> macOS
> Objective-C File
।
পদক্ষেপ_03: আপনি যদি প্রথমবারে সুইফট প্রকল্পে একটি নতুন উদ্দেশ্য-সি ফাইল যুক্ত করেন তবে এক্সকোড আপনাকে জিজ্ঞাসা করবে:
Would you like to configure an Objective-C bridging header
?
পদক্ষেপ_04: বিকল্পটি নির্বাচন করুন:
Create Bridging Header
।
পদক্ষেপ_05: একটি নামের সাথে একটি সম্পর্কিত ফাইল উত্পন্ন করা হবে:
Objc-Bridging-Header.h
।
পদক্ষেপ 66: এখন, আপনাকে ব্রিজ শিরোনামে ব্রিজ ফাইলের পথ সেটআপ করতে হবে। প্রকল্প নেভিগেটরে নাম সহ প্রকল্পে ক্লিক করুন objc
এবং তারপরে চয়ন করুন:
Build Settings
> Objective-C Bridging Header
> Objc-Bridging-Header.h
।
পদক্ষেপ 77: Objc-Bridging-Header.h
একটি ফাইল পাথ তৈরি করতে আপনার সেই বাক্সে টানুন এবং ছেড়ে দিন ।
পদক্ষেপ_08: আপনার Objc-Bridging-Header.h
ফাইলটি খুলুন এবং অবজেক্টিভ সি ফাইলটি আমদানি করুন যা আপনি আপনার সুইফ্ট ফাইলটিতে ব্যবহার করতে চান।
#import "SpecialObjcFile.m"
এখানে একটি বিষয়বস্তু SpecialObjcFile.m
:
#import <Foundation/Foundation.h>
@interface Person: NSObject {
@public
bool busy;
}
@property
bool busy;
@end
পদক্ষেপ_09: এখন আপনার সুইফ্ট ফাইলে আপনি একটি উদ্দেশ্য-সি শ্রেণি ব্যবহার করতে পারেন:
override func viewDidLoad() {
super.viewDidLoad()
let myObjcContent = Person()
print(myObjcContent.busy)
}
লোগানস উত্তরটি সাম্প্রতিকতম ব্যতীত দুর্দান্ত কাজ Swift 5
করে যা কিছু সংকলক ত্রুটি দেয়। যারা সুইফট 5 এ কাজ করছেন তাদের জন্য এখানে স্থিরকরণ।
import Foundation
class MySwiftObject : NSObject {
var someProperty: AnyObject = "Some Initializer Val" as AnyObject
override init() {}
func someFunction(someArg:AnyObject) -> String {
let returnVal = "You sent me \(someArg)"
return returnVal
}
}
একটি শিরোনাম .h
এবং বাস্তবায়ন .m
ফাইল যুক্ত করুন -
উদাহরণস্বরূপ কোকো ক্লাস ফাইল (উদ্দেশ্য-সি)MyFileName
ব্রিজিং শিরোনাম কনফিগার করুন
আপনি যখন দেখেন Would you like to configure an Objective-C bridging header
- হ্যাঁ
<target_name>-Bridging-Header.h
স্বয়ংক্রিয়ভাবে উত্পন্ন করা হবেগণনার জমকালো অনুষ্ঠান-শিরোলেখ ক্লাস যোগ
সালে <target_name>-Bridging-Header.h
একটি লাইন যোগ#import "<MyFileName>.h"
পিএস যদি আপনার বিদ্যমান অবজেক্টিভ-সি ফাইলগুলি সুইফ্ট প্রকল্পে যুক্ত Bridging-Header.h
করা উচিত তবে আগেই যুক্ত করুন
একটি যোগ করুন <MyFileName>.swift
এবং প্রসারিতNSObject
ওবজেসি ক্লাসে সুইফ্ট ফাইলগুলি আমদানি
করুন #import "<#YourProjectName#>-Swift.h"
আপনার উদ্দেশ্য-সি ফাইলটিতে যুক্ত করুন
সর্বজনীন সুইফট কোডটি চিহ্নিত করুন [@objc এবং @objcMeبار]
অ্যাপল এই দস্তাবেজে অফিসিয়াল গাইড সরবরাহ করেছে: কীভাবে কল করতে হবে-উদ্দেশ্য-সি-কোড-থেকে-সুইফ্ট
এখানে প্রাসঙ্গিক অংশ:
একই অ্যাপ্লিকেশনের টার্গেটের মধ্যে সুইজট কোডে অবজেক্টিভ-সি ফাইলগুলির একটি সেট আমদানি করতে, আপনি সেই ফাইলগুলিকে সুইফটে প্রকাশ করার জন্য একটি উদ্দেশ্য-সি ব্রিজিং শিরোলেখ ফাইলটিতে নির্ভর করেন । আপনি যখন বিদ্যমান অবজেক্টিভ-সি অ্যাপ্লিকেশনটিতে একটি সুইফট ফাইল বা একটি বিদ্যমান সুইফট অ্যাপ্লিকেশনটিতে একটি উদ্দেশ্য-সি ফাইল যুক্ত করবেন তখন এক্সকোড এই শিরোনামটি তৈরি করার প্রস্তাব দেয়।
আপনি যদি স্বীকার করেন তবে এক্সকোড আপনার তৈরি করা ফাইলের পাশাপাশি ব্রিজিং শিরোলেখ ফাইলটি তৈরি করে এবং আপনার পণ্যের মডিউল নামটি অনুসরণ করে এর নামকরণ করে "-ব্রীজিং-শিরোলেখ।" বিকল্পভাবে, আপনি ফাইল> নতুন> ফাইল> [অপারেটিং সিস্টেম]> উত্স> শিরোনাম ফাইল নির্বাচন করে একটি ব্রিজিং শিরোনাম তৈরি করতে পারেন
আপনার উদ্দেশ্য-সি কোডটি আপনার সুইফট কোডে প্রকাশ করতে ব্রিজিং শিরোনামটি সম্পাদনা করুন:
ব্রিজিং শিরোনামে তালিকাভুক্ত যে কোনও পাবলিক অবজেক্টিভ-সি শিরোনাম সুইফ্টের কাছে দৃশ্যমান।
উদ্দেশ্য-সি উদ্দেশ্য-সি ব্যবহারের জন্য দ্বিপথের পদ্ধতি
1
2
ধন্যবাদ এখন যেতে ভাল