objective c - উদ্দেশ্য-সি ঘোষিত @ প্রপার্টি বৈশিষ্ট্য(ননটোমিক, কপি, শক্তিশালী, দুর্বল)




objective-c automatic-ref-counting (3)

nonatomic আমার কাছে বিশদভাবে ব্যাখ্যা করতে পারে যখন আমাকে প্রতিটি গুণাবলি ব্যবহার করতে হবে: nonatomic , copy , strong , weak , ইত্যাদি ঘোষিত সম্পত্তির জন্য, এবং প্রতিটি কী ব্যাখ্যা করে? উদাহরণ কিছু সাজানোর মহান হতে হবে। আমি এআরসি ব্যবহার করছি।


এই লিঙ্কটি বিরতি আছে

http://clang.llvm.org/docs/AutomaticReferenceCounting.html#ownership.spelling.property

বরাদ্দ __unsafe_unretained মালিকানা বোঝায়।

অনুলিপি __strong মালিকানা, পাশাপাশি সেটার উপর অনুলিপি semantics স্বাভাবিক আচরণ বোঝায়।

__strong মালিকানা বোঝা রাখা।

শক্তিশালী __strong মালিকানা বোঝায়।

unsafe_unretained __unsafe_unretained মালিকানা বোঝায়।

দুর্বল বোঝায় __weak মালিকানা।


মহান উত্তর! একটি বিষয় যা আমি গভীরতর ব্যাখ্যা করতে চাই তা হল nonatomic / atomic । ব্যবহারকারীকে এই সম্পত্তিটি বোঝা উচিত - "পারমাণবিকতা" কেবলমাত্র উপাদানের রেফারেন্সে ছড়িয়ে পড়ে এবং এর সামগ্রীগুলিতে নয়। আইই atomic পয়েন্টার পড়া / সেটিং এবং বৈশিষ্ট্য শুধুমাত্র পয়েন্টার জন্য ব্যবহারকারী পারমাণবিক গ্যারান্টি হবে। উদাহরণ স্বরূপ:

@interface MyClass: NSObject
@property (atomic, strong) NSDictionary *dict;
...

এই ক্ষেত্রে এটি নিশ্চিত করা হয় যে নির্দেশকটির নির্দেশক বিভিন্ন থ্রেড দ্বারা পরমাণু পদ্ধতিতে পড়তে / সেট করা হবে। কিন্তু স্বতঃস্ফূর্ত (অভিধান নির্দেশক অভিধান) এখনও থ্রেড অনিরাপদ , অর্থাত্ অভিধানে সমস্ত পড়া / যুক্ত ক্রিয়াকলাপগুলি এখনও থ্রেড অনিরাপদ।

আপনি যদি থ্রেড নিরাপদ সংগ্রহের প্রয়োজন হয় তবে আপনার কোনও খারাপ আর্কিটেকচার (আরো প্রায়ই) বা প্রকৃত প্রয়োজন (আরও বিরল) রয়েছে। এটি যদি "প্রকৃত প্রয়োজন" হয় - তাহলে আপনাকে অবশ্যই ভাল এবং পরীক্ষিত থ্রেড নিরাপদ সংগ্রহ উপাদান খুঁজে বের করতে হবে অথবা আপনার নিজের লেখাগুলি পরীক্ষা এবং কষ্টের জন্য প্রস্তুত থাকতে হবে। এটি পরবর্তী ক্ষেত্রে "লক-মুক্ত", "অপেক্ষা-মুক্ত" প্যারাডিজমগুলিতে দেখায়। প্রথম নজরে রকেট-বিজ্ঞানের মতো মনে হচ্ছে, তবে "স্বাভাবিক লকিং" তুলনায় চমত্কার কর্মক্ষমতা অর্জনে আপনাকে সহায়তা করতে পারে।


এই উত্তর অনেক ত্রুটি আছে এবং পুরানো হয়। অন্যান্য প্রশ্ন / উত্তর এবং মন্তব্য দেখুন দয়া করে।

Nonatomic

nonatomic মাল্টি থ্রেডিং উদ্দেশ্যে ব্যবহার করা হয়। ঘোষণার সময় আমরা যদি অটোমোটিমিক অ্যাট্রিবিউট সেট করে থাকি, তবে যে বস্তুর অ্যাক্সেস চাইলে অন্য কোন থ্রেড এটি অ্যাক্সেস করতে পারে এবং মাল্টি-থ্রেডিংয়ের ক্ষেত্রে ফলাফল দিতে পারে।

কপি

বস্তু mutable হয় যখন copy প্রয়োজন। এই মুহূর্তে বস্তুর মানটির প্রয়োজন হলে এটি ব্যবহার করুন, এবং আপনি বস্তুর অন্যান্য মালিকদের দ্বারা যে কোনও পরিবর্তনগুলি প্রতিফলিত করতে চান না তা ব্যবহার করুন। যখন আপনি অনুলিপিটি ধরে রেখেছেন তখন আপনাকে এটির সাথে সম্পন্ন করার জন্য আপনাকে অব্যবহৃত করতে হবে।

দায়িত্ব অর্পণ করা

Assign কিছুটা বিপরীত copy । একটি assign সম্পত্তি এর গেটার কল যখন, এটি প্রকৃত তথ্য একটি রেফারেন্স প্রদান করে। সাধারণত যখন আপনি আদিম প্রকারের সম্পত্তি (ফ্লোট, int, BOOL ...) ব্যবহার করে এই বৈশিষ্ট্যটি ব্যবহার করেন

রাখা

বৈশিষ্ট্য একটি বস্তুর একটি পয়েন্টার হয় যখন অপরিহার্য প্রয়োজন। @synthesize দ্বারা উত্পন্ন @synthesize ধরে রাখবে (ওকে একটি স্থির গণনা যোগ করে)। আপনি যখন এটি সমাপ্ত হয়েছেন তখন অবজেক্টটি মুক্ত করতে হবে। এটি ব্যবহার করে এটি ধরে রাখতে গণনা বৃদ্ধি করবে এবং অটোরলিজ পুলে মেমরি দখল করবে।

শক্তিশালী

অবজেক্ট-সি অটোমেটেড রেফারেন্স কাউন্টিংয়ের (এআরসি) অংশ হিসাবে, স্থিতিশীল বৈশিষ্ট্যটির জন্য একটি প্রতিস্থাপন strong । অ-এআরসি কোডে এটি কেবলমাত্র বজায় রাখার জন্য একটি প্রতিশব্দ।

IOS 5 এর জন্য strong এবং weak সম্পর্কে জানতে এটি একটি ভাল ওয়েবসাইট। http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

দুর্বল

weak strong হিসাবে একই যে এটি রেফারেন্স গণনা 1 দ্বারা বৃদ্ধি হবে না। এটা যে বস্তুর মালিক হয়ে না কিন্তু এটি একটি রেফারেন্স ধারণ করে। যদি বস্তুর রেফারেন্স গণনা 0 হয় তবে আপনি এখনও এখানে ইঙ্গিত করতে পারেন, এটি মেমরি থেকে বরখাস্ত করা হবে।

উপরের লিঙ্কটি দুর্বল এবং শক্তিশালী উভয় সম্পর্কে ভাল তথ্য রয়েছে







declared-property