উদাহরণস্বরূপ যখন কোনও value
বার্তায় NSInteger
যেমন পাঠানো হয়
[a value]
এটি একটি EXC_BAD_ACCESS সৃষ্টি করে।
সুতরাং কিভাবে একটি রূপান্তর করতে NSInteger
করতে int
?
যদি এটি প্রাসঙ্গিক হয় তবে কেবলমাত্র ছোট সংখ্যা <32 ব্যবহার করা হয়।
উদাহরণস্বরূপ যখন কোনও value
বার্তায় NSInteger
যেমন পাঠানো হয়
[a value]
এটি একটি EXC_BAD_ACCESS সৃষ্টি করে।
সুতরাং কিভাবে একটি রূপান্তর করতে NSInteger
করতে int
?
যদি এটি প্রাসঙ্গিক হয় তবে কেবলমাত্র ছোট সংখ্যা <32 ব্যবহার করা হয়।
উত্তর:
তা দা:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
32/64 বিট ইনট ছাড়া আর কিছুই নয়। (আপনি কোন ওএস / প্ল্যাটফর্মটি চালাচ্ছেন তার উপর ভিত্তি করে এটি উপযুক্ত আকারটি ব্যবহার করবে)
আপনি এই ইনলাইন কাজ করতে চান, তাহলে শুধু নিক্ষেপ NSUInteger
বা NSInteger
একটি থেকে int
:
int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false
NSInteger
মান ব্যবহার করার চেষ্টা করেন তবে একটি অন্তর্নিহিত রূপান্তর ঘটবে int
। উভয় ক্ষেত্রেই এটি একটি বহু-লাইন সমাধান নয়।
আমি পরিস্থিতি যেখানে আপনি একটি রূপান্তর করতে হবে সম্পর্কে নিশ্চিত নই NSInteger
একটি থেকে int
।
এনএসআইঞ্জার কেবলমাত্র টাইপেইফ:
NSInteger আপনি কোনও 32-বিট বা 64-বিট সিস্টেমের জন্য নির্মাণ করছেন কিনা তা স্বাধীনভাবে কোনও পূর্ণসংখ্যার বর্ণনা দিতে ব্যবহৃত হয়।
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
আপনি যে NSInteger
কোনও জায়গা int
এটিকে রূপান্তর না করে ব্যবহার করতে পারেন ।
UIsegmentedControl এ সাধারণত ব্যবহৃত হয়, 32 বিটের পরিবর্তে 64৪ বিটগুলিতে সংকলন করার সময় "ত্রুটি" উপস্থিত হয়, এটি কোনও নতুন ভেরিয়েবলের কাছে না দেওয়ার সহজ উপায় হ'ল এই টিপসটি ব্যবহার করা, ( যোগ করা ) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
পরিবর্তে :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];