সম্পত্তি "ননোটমিক" এর অর্থ কী?


144

এই কোডটিতে "ননোটমিক" এর অর্থ কী?

@property(nonatomic, retain) UITextField *theUsersName;

পারমাণবিক এবং ননোটমিকের মধ্যে পার্থক্য কী?

ধন্যবাদ


3
দুঃখিত, এটি নির্দিষ্ট করতে ভুলে গেছেন অবজেক্টিভ-সি (কোকো)


যে কেউ এটি পড়ছেন, ২০১৪ সালের জন্য এটি উপলব্ধি করা গুরুত্বপূর্ণ যে এই তথ্যটি প্রচুর তারিখের বাইরে। একটি কথায় আছে, ননোটমিক ব্যবহারের কোনও কারণ নেই এবং এটি কোনও কারণেই এটি ব্যবহার করা মূলত ভুল। এটি প্রাচীন ইতিহাস। ননোটমিকের অর্থ "থ্রেড অনিরাপদ মোড" এবং এটি (এককথায়) এখন সম্পূর্ণ অপ্রাসঙ্গিক। এখানে কিছু মন্তব্য stackoverflow.com/q/23977765/294884
ফ্যাটি

আমি "অ প্রাসঙ্গিক" উক্তিটির সাথে একমত নই। যদি মান কদাচিৎ পরিবর্তিত হয় এবং অ্যাপল ডকের উদাহরণ হিসাবে সর্বশেষ নাম। এটি একবার পরিবর্তিত হয় পরমাণু ইঙ্গিত ব্যবহার করে সম্পদের অপচয় হ'ল যেহেতু চেকগুলির প্রয়োজন হয় না।
নিক টার্নার

এখানে উত্তর stackoverflow.com/a/32942413/1961064
Grigori Jlavyan

উত্তর:


268

কটাক্ষপাত অ্যাপল ডক্স

মূলত, যদি আপনি বলে থাকেন nonatomicএবং আপনি অ্যাক্সেসরগুলি ব্যবহার করে উত্পন্ন করেন @synthesize, তবে একাধিক থ্রেড যদি সম্পত্তিটি একবারে পরিবর্তন / পড়ার চেষ্টা করে তবে খারাপী হতে পারে। আপনি আংশিক-লিখিত মান বা অতিরিক্ত প্রকাশিত / ধরে রাখা অবজেক্টগুলি পেতে পারেন, যা সহজেই ক্র্যাশ হতে পারে। (যদিও এটি পারমাণবিক প্রবেশাধিকারীর তুলনায় অনেক বেশি দ্রুত)

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

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


7
আমি এই উত্তরটি পছন্দ করি - কম বিভ্রান্তিকর, সহজ এবং আরও সম্পূর্ণ যে এটি অন্য কোথাও পাওয়া যায়!
পাপিলনউক

সত্যিই দুর্দান্ত এক এবং কম বিভ্রান্তিকর (+1) তবে আপনি কি দয়া করে বলতে পারেন যে কেন পারমাণবিক প্রবেশাধিকারীর চেয়ে অ পারমাণবিক সম্ভাবনা খুব দ্রুত?
শুভেচ্ছা

2
@ ইচ্ছুক অ-পারমাণবিক অ্যাক্সেসরগুলি আরও দ্রুত হতে পারে কারণ একই সাথে অন্যান্য থ্রেডগুলি পড়া / লেখার হাত থেকে বাঁচতে আপনার একটি মিউটেক্স রাখা বা কিছু অন্যান্য নিম্ন-স্তরের কৌশল করতে হবে যা সিপিইউয়ের জন্য ব্যয় করে। আপনি যদি কোনও লক ব্যবহার করছেন তবে আপনি অন্যান্য থ্রেডগুলিতেও অবরুদ্ধ করতে পারেন, এতে সময়ও লাগে।
জেসি রুশাক

1
@ রব আপনি সে সম্পর্কে একটি নতুন প্রশ্ন জিজ্ঞাসা করতে পারেন।
জেসি রুশাক

1
@ প্রতীক দুঃখিত, এটি সঠিক নয়। আপনার প্রদর্শিত উক্তিটি হুবহু একইভাবে বলছে যে আমি করেছি: atomicপৃথক সম্পত্তিতে অ্যাক্সেস করার সময় কোনও সম্পত্তি তৈরি করা ক্রাশ হওয়া এড়ায় কিন্তু নিশ্চিত করে না যে পুরো বস্তুটি (যেমন প্রথম এবং শেষের মতো পৃথক সম্পত্তি অ্যাক্সেস করা) করতে চলেছে আসল চিন্তা.
জেসি রুশাক

46

প্রচুর নিবন্ধ এবং স্ট্যাকওভারফ্লো পোস্টগুলি পড়ার পরে এবং ভেরিয়েবল সম্পত্তি বৈশিষ্ট্যগুলি পরীক্ষা করতে ডেমো অ্যাপ্লিকেশনগুলি তৈরি করার পরে, আমি সমস্ত বৈশিষ্ট্যের তথ্য একসাথে রাখার সিদ্ধান্ত নিয়েছি

  1. পারমাণবিক // ডিফল্ট
  2. nonatomic
  3. strong = برقرار // ডিফল্ট
  4. দুর্বল = অনিরাপদ_মুক্ত
  5. রাখা
  6. নির্ধারিত // ডিফল্ট
  7. unsafe_unretained
  8. কপি
  9. শুধুমাত্র পাঠযোগ্য
  10. পঠন রচনা // ডিফল্ট

সুতরাং নীচে বিস্তারিত নিবন্ধ লিঙ্ক যেখানে আপনি উপরে উল্লিখিত সমস্ত বৈশিষ্ট্য খুঁজে পেতে পারেন, এটি অবশ্যই আপনাকে সহায়তা করবে। যারা এখানে সেরা উত্তর দেয় তাদের সকলকে অনেক ধন্যবাদ !!

আইওএসে পরিবর্তনশীল সম্পত্তি বৈশিষ্ট্য বা সংশোধক

  1. পারমাণবিক
    • পারমাণবিক অর্থ কেবলমাত্র একটি থ্রেড ভ্যারিয়েবল অ্যাক্সেস করতে পারে (স্ট্যাটিক টাইপ)।
    • পারমাণবিক থ্রেড নিরাপদ।
    • তবে এটি পারফরম্যান্সে ধীর।
    • পারমাণবিক হ'ল ডিফল্ট আচরণ।
    • কোনও আবর্জনা-সংগৃহীত পরিবেশে পারমাণবিক অ্যাক্সেসরগুলি (যেমন ধরে রাখতে / রিলিজ / অটোরিলেজ ব্যবহার করার সময়) অন্য একটি থ্রেডটি মানটির সঠিক সেটিং / প্রাপ্তিতে হস্তক্ষেপ না করে তা নিশ্চিত করতে একটি লক ব্যবহার করবে।
    • এটি আসলে কোনও কীওয়ার্ড নয়।

উদাহরণ:

@property (retain) NSString *name;

@synthesize name;
  1. nonatomic
    • ননোটমিক মানে একাধিক থ্রেড অ্যাক্সেস ভেরিয়েবল (ডায়নামিক টাইপ)।
    • ননোটমিক থ্রেড অনিরাপদ।
    • তবে এটি পারফরম্যান্সে দ্রুত।
    • ননোটমিকটি ডিফল্ট আচরণ নয়; আমাদের সম্পত্তি বৈশিষ্ট্যে নন্যাটমিক কীওয়ার্ড যুক্ত করতে হবে।
    • এটি অপ্রত্যাশিত আচরণের ফলে, যখন দুটি পৃথক প্রক্রিয়া (থ্রেড) একই সময়ে একই পরিবর্তনশীল অ্যাক্সেস করতে পারে।

উদাহরণ:

@property (nonatomic, retain) NSString *name;

@synthesize name;

12

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


9

একটি বহু-থ্রেড প্রোগ্রামে, একটি পারমাণবিক অপারেশন আংশিকভাবে মাধ্যমে বাধাগ্রস্ত করা যায় না, যেখানে ননোটমিক অপারেশন করতে পারে।

অতএব, আপনার যদি এমন কোনও সমালোচনামূলক অপারেশন থাকে যা আপনি অকার্যকর হয় যে আপনি বাধা দিতে চান না তবে আপনার মুটেক্সেস (বা এর মতো কিছু) ব্যবহার করা উচিত।


8

আপনি যদি "পারমাণবিক" নির্দিষ্ট করেন তবে উত্পন্ন অ্যাক্সেস ফাংশনগুলির একসাথে আপডেটগুলি থেকে রক্ষা পেতে কিছু অতিরিক্ত কোড থাকে।


6

সাধারণত পারমাণবিক মানে সম্পত্তি লিখতে / পড়ার একক ক্রিয়া হিসাবে ঘটে। Atomic_operation


2

আপনি নীচের নিবন্ধটি পড়ে এই স্টাফগুলির একটি হ্যান্ডেল পেতে সক্ষম করতে পারেন।

থ্রেডিং ননোটমিকের উদ্দেশ্য নিয়ে ব্যাখ্যা করা হয়েছে

ননোটমিক - থ্রেড নিরাপদ নয়

পারমাণবিক - থ্রেড নিরাপদ - এটি ডিফল্ট সম্পত্তি বৈশিষ্ট্য।


1
আপনি কি নিশ্চিত যে এটি বিপরীত নয়? পরমাণু বৈশিষ্ট্য হয় কিন্তু নিরাপদ nonatomic সম্পত্তি না নিরাপদ।
গতবার

0

"পারমাণবিক" মানে যে সম্পত্তি এক্সেস থ্রেড-নিরাপদ। যখন "nonatomic" এটা সম্পূর্ণ বিপরীত। আপনি যখন উদ্দেশ্য সি একটি সম্পত্তি সম্পত্তি ডিফল্টরূপে পারমাণবিক যাতে সংশ্লেষিত accessors সম্পত্তিতে শক্তসমর্থ অ্যাক্সেস প্রদান ঘোষণা বহুবিবাহিত পরিবেশে - অর্থাত্ গেটর থেকে সেটারের মাধ্যমে ফিরে আসা মানটি সর্বদা পুরোপুরি পুনরুদ্ধার করা হয় বা নির্ধারিত হয় যে অন্য থ্রেডগুলি যুগপতভাবে সঞ্চালিত হচ্ছে তা নির্বিশেষে you তবে আপনি যদি নীচের মতো সম্পত্তি অ-প্রাকৃতিক হিসাবে ঘোষণা করেন

@property (nonatomic, retain)  NSString *myString;

তারপরে এর অর্থ একটি অবজেক্ট প্রোপার্টিটির জন্য একটি সংশ্লেষিত অ্যাক্সেসর কেবলমাত্র সরাসরি মানটি দেয়। ননোটমিক বৈশিষ্ট্যের প্রভাব পরিবেশের উপর নির্ভর করে। ডিফল্টরূপে, সংশ্লেষিত অ্যাকসেসরগুলি পারমাণবিক। সুতরাং অ্যানোটমিকটি পারমাণবিকের তুলনায় যথেষ্ট দ্রুত।


-2

একটি মাল্টি থ্রেড জন্য। একজন নিখোঁজ


আইএমএইচও: কোনও আপত্তি পেতে, আপনাকে আরও নির্দিষ্ট হতে হবে এবং আপনার উত্তর লেখার জন্য কিছুটা সময় ব্যয় করতে হবে।
জোহান কার্লসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.