@ প্রতীক উদ্দেশ্য-সিতে কী উপস্থাপন করে?


141

আমি অবজেকটিভ সি শিখছি এবং @ সিম্বলটিতে ঝাঁপিয়ে পড়ছি। এটি বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়, উদাহরণস্বরূপ স্ট্রিংয়ের শুরুতে বা অ্যাকসেসর পদ্ধতি সংশ্লেষ করতে।

@ প্রতীকটির উদ্দেশ্য-সি এর অর্থ কী?


@ ইনটারফেস এবং @ এন্ডের আগে @ ব্যবহার করা হয় কেন?
ললিত কুমার

উত্তর:


159

@চরিত্র, C অথবা সি ++ শনাক্তকারী ব্যবহার করা হয় না তাই এটি ভাবে উদ্দেশ্য সি ভাষা কীওয়ার্ড পরিচয় করিয়ে দিতে ব্যবহৃত হচ্ছে হবে এমন অন্যান্য ভাষায় 'কীওয়ার্ড সঙ্গে দ্বন্দ্ব নেই। এটি ভাষার "উদ্দেশ্যমূলক" অংশটি অবাধে সি বা সি ++ অংশের সাথে সংযোগ স্থাপনে সক্ষম করে।

সুতরাং খুব অল্প ব্যতিক্রম ব্যতীত যে কোনও সময় আপনি @কিছু উদ্দেশ্য-সি কোডে দেখেন , আপনি সি বা সি ++ কনস্ট্রাক্টের পরিবর্তে অবজেক্টিভ-সি নির্মাণের দিকে তাকিয়ে রয়েছেন।

প্রধান ব্যতিক্রম আছে id, Class, nil, এবং Nil, সাধারণত ভাষা কীওয়ার্ড হিসাবে গণ্য হয় এমনকি যদিও তারা একটি থাকতে পারে typedefবা #defineতাদের পেছনে। উদাহরণস্বরূপ, সংকলক প্রকৃতপক্ষে idপয়েন্টার ধরণের রূপান্তর বিধিগুলির ক্ষেত্রে বিশেষভাবে আচরণ করে যা এটি ঘোষণার ক্ষেত্রে প্রযোজ্য, পাশাপাশি জিসি রাইট বাধা তৈরি করতে হবে কিনা সে সিদ্ধান্তের ক্ষেত্রেও।

অন্যান্য ব্যতিক্রম আছে in, out, inout, oneway, byref, এবং bycopy; এগুলি ডিস্ট্রিবিউটেড অবজেক্টগুলিকে আরও দক্ষ করার জন্য পদ্ধতি প্যারামিটার এবং রিটার্নের ধরণের স্টোরেজ ক্লাস টিকা হিসাবে ব্যবহার করা হয়। (তারা রানটাইম, যা কীভাবে সেরা ধারাবাহিকভাবে করার জন্য একটি লেনদেনের নির্ধারণ তাকান পারেন থেকে পাওয়া পদ্ধতি স্বাক্ষর অংশ হয়ে।) এছাড়া মধ্যে বৈশিষ্ট্যাবলী হয় @propertyঘোষণা, copy, retain, assign, readonly, readwrite, nonatomic, getter, এবং setter; এগুলি কেবলমাত্র একটি @propertyঘোষণার বৈশিষ্ট্য বিভাগের মধ্যে বৈধ ।


4
@ (এক্সপ্রেশন) কী করবে সে সম্পর্কে আপনি কিছু ব্যাখ্যা করতে পারেন? আমি এক্সকোডে @ টাইপ করার সময় দেখানো পপআপটিতে এটি কেবলমাত্র আমি বুঝতে পারি না।
jchnxu

10
@ (99) হ'ল [এনএস নাম্বার নম্বর উইথইন্টিজার: 99] এর মতো। @ (ইয়েস) [এনএসএন নাম্বার উইথবুল: ইয়েস] এর সমান। @ চিহ্নটি বস্তু তৈরির শর্টকাট।
জোজো

7
এই "উত্তর" সত্যই বর্ণিত প্রশ্নের উত্তর দেয় না বলে অন্য কেউ কি বিভ্রান্ত? প্রশ্নকারী জিজ্ঞাসা করে "উদ্দেশ্য-সিতে '@' এর অর্থ কী?" এবং উত্তরদাতা বলেন "এর অর্থ আপনি উদ্দেশ্য-সি ব্যবহার করছেন।" আমি মনে করি তিনি ইতিমধ্যে যতটা জানতেন ...
জন ম্যাকক্লাং

1
স্বেচ্ছাসেবীর বাছাই; এটি প্রথম ASCII সেটটিতে থাকা দরকার এবং সি দ্বারা ইতিমধ্যে ব্যবহৃত হয়নি যখন প্রথম উদ্দেশ্য-সি প্রিপ্রসেসরটি লেখা হয়েছিল। এ কারণেই @
ক্রিস হ্যানসন

1
জন ম্যাকক্লুং: লিও সঠিক, এর "গভীর অর্থ নেই"। @চরিত্র, C দ্বারা অব্যবহৃত ছিল তাই এটি বিকল্প পার্সিং যে বিদ্যমান সি কোড সহ 100% সামঞ্জস্য সংরক্ষিত করার জন্য একটি সুবিধাজনক "পালাবার ডিম পাড়া" ছিল।
ক্রিস হ্যানসন

63

থেকে @ প্রতীক: উদ্দেশ্য সি টিউটোরিয়াল , কারণ বিভিন্ন কীওয়ার্ড সামনে হল:

@ ব্যবহারের ফলে একটি বিদ্যমান সি সংকলকটিতে একটি উদ্দেশ্য-সি সংকলকটি বোল্ট করা আরও সহজ হওয়া উচিত। @ স্ট্রিং আক্ষরিক ব্যতীত সি-এর কোনও প্রসঙ্গে বৈধ নয়, তাই টোকেনাইজার (সংকলকটির প্রথম এবং সাধারণ পদক্ষেপ) কেবল একটি স্ট্রিং ধ্রুবকের বাইরে @ অক্ষর সন্ধানের জন্য সংশোধন করা যেতে পারে (টোকেনাইজার স্ট্রিং লিটারালগুলি বোঝে , সুতরাং এটি আলাদা করার মতো অবস্থানে রয়েছে)। @ টোকনাইজারের মুখোমুখি হওয়ার সাথে সাথে বাকী সংকলকটি "উদ্দেশ্য-সি মোডে" রাখবে। (উদ্দেশ্য-সি পার্সার যখন উদ্দেশ্য-সি কোডের শেষটি সনাক্ত করে তখন নিয়মিত সি মোডে সংকলকটি ফেরত দেওয়ার জন্য দায়বদ্ধ)।

এছাড়াও যখন স্ট্রিং আক্ষরিকের সামনে দেখা যায়, এটি সিতে 'চর *' না দিয়ে এনএসএসআরটিং করে


24

ম্যাক্রামারগুলি থেকে : অবজেক্ট-সি টিউটোরিয়াল , যখন স্ট্রিংয়ের সামনে আক্ষরিক:

এছাড়াও @ "" এনএসএস স্ট্রিং লিটারেল রয়েছে। এটি এনএসএসস্ট্রিংয়ের + স্ট্রিংউইথএফ 8 স্ট্রিং পদ্ধতির জন্য মূলত শর্টহ্যান্ড।

@ সি স্ট্রিংগুলিতে ইউনিকোড সমর্থন যুক্ত করে।


12
"এটি এনএসএসস্ট্রিংয়ের + স্ট্রিংউইথএফ 8 স্ট্রিং পদ্ধতির জন্য মূলত শর্টহ্যান্ড" " ঠিক আছে, ঠিক না। স্ট্রিংগুলি স্থিতিশীলভাবে বরাদ্দ করা হয়, যা এগুলি +[NSString stringWithUTF8String:](গতিশীলভাবে বরাদ্দকৃত) থেকে আলাদা করে তোলে এবং তাদের মুক্তি এবং ধরে রাখার কোনও প্রভাব নেই।

16

ম্যানুয়াল থেকে :

উদ্দেশ্য-সি ফ্রেমওয়ার্কগুলি সাধারণত সি-স্টাইলের স্ট্রিং ব্যবহার করে না। পরিবর্তে, তারা এনএসএসস্ট্রিং অবজেক্ট হিসাবে চারপাশে স্ট্রিংগুলি পাস করে।

এনএসএসটিং ক্লাসটি স্ট্রিংগুলির জন্য একটি অবজেক্ট র‌্যাপার সরবরাহ করে যা আপনি প্রত্যাশা করে যে সমস্ত সুবিধা রয়েছে যার মধ্যে রয়েছে স্বেচ্ছাসেবী দৈর্ঘ্যের স্ট্রিংগুলি সংরক্ষণের জন্য অন্তর্নির্মিত মেমরি পরিচালনা, ইউনিকোডের জন্য সমর্থন, প্রিন্টফেল-স্টাইল বিন্যাসের ইউটিলিটিস এবং আরও অনেক কিছু। এই জাতীয় স্ট্রিং সাধারণত ব্যবহৃত হলেও, অবজেক্টিভ-সি ধ্রুবক মানগুলি থেকে এনএসএসস্ট্রিং অবজেক্ট তৈরি করার জন্য একটি শর্টহ্যান্ড স্বরলিপি সরবরাহ করে। এই শর্টহ্যান্ডটি ব্যবহার করতে, আপনাকে যা করতে হবে তা হল নীচের উদাহরণগুলিতে যেমন দেখানো হয়েছে তেমন @ প্রতীক সহ একটি স্বাভাবিক, ডাবল-কোটড স্ট্রিংয়ের আগে

NSString *myString = @"My String\n";
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];

3
তবে এটি কোথায় @ব্যবহৃত হয় তার একমাত্র উদাহরণ । আমি এই জাতীয় কোডটি দেখছি: mapperOptions = @{ kSTMapperVolumeResolutionKey: @(volumeResolution),...
এনএসএসস্ট্রিংয়ের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.