আমার অনুমান যে আপনি যে সংকলক সংস্করণটি ব্যবহার করছেন তা ঘোষিত বৈশিষ্ট্যগুলির জন্য মেমরি পরিচালনার নিয়মগুলিও অনুসরণ করে - বিশেষত ঘোষিত সম্পত্তিগুলির অ্যাক্সেসরদের জন্য:
আপনি যদি এমন কোনও পদ্ধতি ব্যবহার করে তৈরি করেন যার নাম "বরাদ্দ", "নতুন", "অনুলিপি", বা "মিউটেবলকপি" দিয়ে শুরু হয় আপনি কোনও সামগ্রীর মালিকানা গ্রহণ করেন।
নামযুক্ত সম্পত্তি newTitle
, সংশ্লেষিত হলে, একটি পদ্ধতির নাম আসে -newTitle
যা সতর্কতা / ত্রুটি। সম্পত্তির -newTitle
জন্য প্রাপ্তি পদ্ধতি হিসাবে ধারণা করা হয় newTitle
, তবে নামকরণের সম্মেলনগুলিতে উল্লেখ করা হয় যে যার নাম দিয়ে শুরু হয় এমন একটি পদ্ধতি new
কলারের মালিকানাধীন কোনও জিনিস ফেরত দেয় যা গেটর পদ্ধতির ক্ষেত্রে নয়।
আপনি এটির মাধ্যমে সমাধান করতে পারেন:
এই সম্পত্তিটির পুনঃনামকরণ:
@property (strong, nonatomic) NSString *theNewTitle;
সম্পত্তির নাম রাখা এবং একটি গিটারের নাম নির্দিষ্ট করা যা কোনও বিশেষ পদ্ধতির নাম উপসর্গগুলির সাথে আরম্ভ হয় না:
@property (strong, nonatomic, getter=theNewTitle) NSString *newTitle;
সম্পত্তির নাম এবং গেটের নাম উভয়ই রাখা এবং সংকলককে বলা যে, গেটের নামটি শুরু হওয়া সত্ত্বেও new
, এটি none
পদ্ধতি পরিবারের বিপরীতে new
পদ্ধতি পরিবারের অন্তর্ভুক্ত:
#ifndef __has_attribute
#define __has_attribute(x) 0 // Compatibility with non-clang compilers
#endif
#if __has_attribute(objc_method_family)
#define BV_OBJC_METHOD_FAMILY_NONE __attribute__((objc_method_family(none)))
#else
#define BV_OBJC_METHOD_FAMILY_NONE
#endif
@interface ViewController : UIViewController
@property (strong, nonatomic) NSString *newTitle;
- (NSString *)newTitle BV_OBJC_METHOD_FAMILY_NONE;
@end
মনে রাখবেন যে এই সমাধানটি আপনাকে newTitle
সম্পত্তির নাম এবং গেটের নাম উভয় হিসাবে রাখার অনুমতি দেয় যদিও -newTitle
কলারের মালিকানাধীন কোনও জিনিস ফেরত দেয় না এমন একটি পদ্ধতি বলা আপনার কোডটি পড়ে অন্য ব্যক্তির জন্য বিভ্রান্তিকর হতে পারে।
রেকর্ডটির জন্য, অ্যাপল এআরসি রিলিজ নোটগুলিতে রূপান্তরিত প্রকাশ করেছে , যেখানে তারা জানিয়েছে:
আপনি একটি সম্পত্তি একটি নাম দিয়ে শুরু হয় দিতে পারবে না new
বা copy
।
তাদের ইতিমধ্যে জানিয়ে দেওয়া হয়েছে যে তাদের বক্তব্যটি পুরোপুরি সঠিক নয়: দোষী সম্পত্তিটির নাম নয়, প্রাপ্তির পদ্ধতির নাম।
17 জানুয়ারী 2015 সম্পাদনা করুন: আমি স্রেফ ক্ল্যাংয়ের প্রতি সাম্প্রতিক প্রতিশ্রুতিটি লক্ষ্য করেছি যে objc_method_family(none)
সাধারণ ক্ষেত্রে যেখানে কোনও সম্পত্তির নাম একটি বিশেষ পদ্ধতির পারিবারিক উপসাগুলির সাথে মেলে তার জন্য একটি ফিক্স-সহ, উপরের 3 বিকল্পটি (ব্যবহার ) করার পরামর্শ দেয় । এক্সকোড সম্ভবত শেষ পর্যন্ত এই পরিবর্তনটি অন্তর্ভুক্ত করবে।