এক্সকোড .3.৩ এর সাথে ওপজেক্ট -সি-তে (এবং অবশ্যই আরও ভাল সুইফট সমর্থন নিশ্চিত করার জন্য) এপিআইয়ের অভিপ্রায়টি আরও ভালভাবে প্রকাশ করার জন্য নতুন টীকাগুলি চালু করা হয়েছিল । এই টীকা অবশ্যই ছিল nonnull
, nullable
এবং null_unspecified
।
তবে এক্সকোড with এর সাথে প্রচুর সতর্কতা উপস্থিত রয়েছে যেমন:
পয়েন্টার একটি অযোগ্যতা টাইপ স্পেসিফায়ার (_ননল, _নুলبل বা _নুল_অনস্পষ্ট) হারিয়েছে।
এগুলি ছাড়াও, অ্যাপল তাদের সি কোড ( উত্স ) চিহ্নিত করে অন্য ধরণের নালিয়াযোগ্যতা নির্দিষ্টকরণকারী ব্যবহার করে :
CFArrayRef __nonnull CFArrayCreate(
CFAllocatorRef __nullable allocator, const void * __nonnull * __nullable values, CFIndex numValues, const CFArrayCallBacks * __nullable callBacks);
সুতরাং, সংক্ষেপে বলতে গেলে, আমাদের কাছে এখন এই 3 টি পৃথক নালাব্যালি টিকা রয়েছে:
nonnull
,nullable
,null_unspecified
_Nonnull
,_Nullable
,_Null_unspecified
__nonnull
,__nullable
,__null_unspecified
যদিও আমি জানি যে কেন এবং কোথায় কোন টীকাটি ব্যবহার করতে হবে, আমি কী ধরণের টিকা ব্যবহার করব, কোথায় এবং কেন তা ব্যবহার করে কিছুটা বিভ্রান্ত হচ্ছি। এই আমি সংগ্রহ করতে পারে:
- বৈশিষ্ট্য আমি ব্যবহার উচিত
nonnull
,nullable
,null_unspecified
। - আমি ব্যবহার করা উচিত পদ্ধতি পরামিতি জন্য
nonnull
,nullable
,null_unspecified
। - সি পদ্ধতি আমি ব্যবহার উচিত
__nonnull
,__nullable
,__null_unspecified
। - যেমন ডবল পয়েন্টার আমি ব্যবহার করা উচিত অন্যান্য ক্ষেত্রে জন্য
_Nonnull
,_Nullable
,_Null_unspecified
।
তবে আমি এখনও বিভ্রান্ত হয়েছি কেন আমাদের কাছে এতগুলি টিকা আছে যা মূলত একই জিনিসটি করে।
সুতরাং আমার প্রশ্নটি হ'ল:
এই টীকাগুলির মধ্যে সঠিক পার্থক্য কীভাবে, সেগুলি সঠিকভাবে কীভাবে রাখা যায় এবং কেন?