আইকো এবং অন্যরা সঠিক উত্তর দিয়েছিলেন।
এখানে একটি সহজ উপায়: সরাসরি ব্যক্তিগত সদস্যের ভেরিয়েবল অ্যাক্সেস করুন।
উদাহরণ
হেডার .h ফাইলটিতে:
@property (strong, nonatomic, readonly) NSString* foo;
এমএম ফাইল বাস্তবায়নে:
self->_foo = @"someString";
এটাই, এটাই আপনার দরকার। কোন ঝাঁকুনি নেই, গোলমাল নেই।
বিশদ
এক্সকোড ৪.৪ এবং এলএলভিএম সংকলক ৪.০ (এক্সকোড ৪.৪-এ নতুন বৈশিষ্ট্য ) হিসাবে, আপনার অন্যান্য উত্তরে আলোচিত কাজগুলি নিয়ে গণ্ডগোলের দরকার নেই:
synthesizeশব্দ
- একটি পরিবর্তনশীল ঘোষণা
- এম। এম ফাইল প্রয়োগের ক্ষেত্রে সম্পত্তি পুনরায় ঘোষণা করা।
সম্পত্তি ঘোষণার পরে foo , আপনি অনুমান করতে পারেন Xcode আন্ডারস্কোর একটি উপসর্গ নামে একটি বেসরকারি সদস্য পরিবর্তনশীল যোগ করেনি: _foo।
সম্পত্তিটি ঘোষিত হলে readwrite, এক্সকোড নামের একটি গেটর পদ্ধতি fooএবং একটি সেটারের নাম উত্পন্ন করে setFoo। আপনি ডট স্বরলিপি ব্যবহার করার সময় এই পদ্ধতিগুলি স্পষ্টতই ডাকা হয় (আমার অবজেক্ট.মিমেদোদ)। সম্পত্তিটি ঘোষণা করা readonlyহলে কোনও সেটার উত্পন্ন হয় না। এর অর্থ আন্ডারস্কোর সহ নামকরণ করা ব্যাকিং ভেরিয়েবল না নিজেই কেবল পঠনযোগ্য। দ্যreadonly অর্থ হ'ল কোনও সেটার পদ্ধতি সংশ্লেষিত হয়নি, এবং তাই কোনও মান নির্ধারণের জন্য ডট স্বরলিপি ব্যবহার করে একটি সংকলক ত্রুটির সাথে ব্যর্থ হয়। ডট স্বরলিপি ব্যর্থ হয়েছে কারণ সংকলকটি আপনাকে অস্তিত্ব নেই এমন কোনও পদ্ধতি (সেটটার) কল করতে বাধা দেয়।
এর চারপাশের সহজ উপায়টি হ'ল আন্ডারস্কোর সহ নামযুক্ত সদস্য ভেরিয়েবলটি সরাসরি অ্যাক্সেস করা। আন্ডারস্কোর-নামক ভেরিয়েবলটি ঘোষণা না করেও আপনি এটি করতে পারেন! এক্সকোড সেই ঘোষণাটি বিল্ড / কমপাইল প্রক্রিয়ার অংশ হিসাবে সন্নিবেশ করছে, সুতরাং আপনার সংকলিত কোডটিতে অবশ্যই ভেরিয়েবল ঘোষণা থাকবে ration তবে আপনি কখনই সেই ঘোষণাটি আপনার মূল উত্স কোড ফাইলে দেখতে পাবেন না। জাদু নয়, ঠিক সিনট্যাকটিক চিনি ।
ব্যবহার self->করা অবজেক্ট / ইনস্ট্যান্সের সদস্য ভেরিয়েবল অ্যাক্সেস করার একটি উপায়। আপনি এটি বাদ দিতে সক্ষম হতে পারেন এবং কেবলমাত্র ভের নামটি ব্যবহার করতে পারেন। তবে আমি স্ব + তীর ব্যবহার পছন্দ করি কারণ এটি আমার কোডকে স্ব-ডকুমেন্টিং করে। আপনি যখন দেখতে পাবেন তখন self->_fooঅস্পষ্টতা ছাড়াই যা _fooএই উদাহরণে সদস্য পরিবর্তনশীল।
উপায় দ্বারা, অনুকূল এবং সরাসরি ivar এক্সেস বনাম সম্পত্তি accessors কনস আলোচনা ঠিক ড পড়ব চিন্তাশীল চিকিত্সার ধরনের ম্যাট Neuberg এর প্রোগ্রামিং আইওএস বই। আমি এটি পড়তে এবং পুনরায় পড়তে খুব সহায়ক বলে মনে করেছি।