คำถามติดแท็ก nsinteger

8
ควรใช้ NSInteger vs. int เมื่อใด
เมื่อใดที่ฉันควรใช้NSIntegervs. int เมื่อพัฒนาสำหรับ iOS ฉันเห็นในโค้ดตัวอย่างของ Apple ที่ใช้NSInteger(หรือNSUInteger ) เมื่อส่งค่าเป็นอาร์กิวเมนต์ไปยังฟังก์ชันหรือส่งคืนค่าจากฟังก์ชัน - (NSInteger)someFunc;... - (void)someFuncWithInt:(NSInteger)value;... แต่ภายในฟังก์ชั่นพวกเขาใช้intเพื่อติดตามค่า for (int i; i < something; i++) ... int something; something += somethingElseThatsAnInt; ... ฉันอ่านแล้ว (ได้รับการบอก) ว่าNSIntegerเป็นวิธีที่ปลอดภัยในการอ้างอิงจำนวนเต็มในสภาพแวดล้อม 64- บิตหรือ 32- บิตดังนั้นทำไมจึงใช้งานintได้ทั้งหมด

5
เหตุใดตัวแปร NSInteger จึงต้องถูกแปลงเป็นแบบยาวเมื่อใช้เป็นอาร์กิวเมนต์รูปแบบ
NSInteger myInt = 1804809223; NSLog(@"%i", myInt); <==== รหัสด้านบนสร้างข้อผิดพลาด: ไม่ควรใช้ค่าประเภท 'NSInteger' เป็นอาร์กิวเมนต์รูปแบบ เพิ่มเพี้ยนชัดใสเป็น 'ยาว' แทน แก้ไขข้อความที่เป็นจริงNSLog NSLog(@"%lg", (long) myInt);ทำไมฉันต้องแปลงค่าจำนวนเต็มmyIntเป็นlongถ้าฉันต้องการให้ค่าแสดง?


3
NSLog / printf specifier สำหรับ NSInteger?
A NSIntegerคือ 32 บิตบนแพลตฟอร์ม 32 บิตและ 64 บิตบนแพลตฟอร์ม 64 บิต มีตัวNSLogระบุที่ตรงกับขนาดNSIntegerหรือไม่ ติดตั้ง Xcode 3.2.5 llvm 1.6 คอมไพเลอร์(นี่เป็นสิ่งสำคัญ gcc ไม่ทำสิ่งนี้) GCC_WARN_TYPECHECK_CALLS_TO_PRINTF เปิด นั่นทำให้ฉันเสียใจที่นี่: #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSInteger i = 0; NSLog(@"%d", i); } return 0; } สำหรับรหัส 32 บิตฉันต้องการตัว%dระบุ แต่ถ้าฉันใช้ตัว%dระบุฉันจะได้รับคำเตือนเมื่อคอมไพล์เป็น 64 …

4
วิธีการแปลง NSInteger เป็น int?
ตัวอย่างเช่นเมื่อส่งvalueข้อความไปยังNSIntegerอินสแตนซ์เช่นนั้น [a value] มันทำให้เกิด EXC_BAD_ACCESS ดังนั้นวิธีการแปลงNSIntegerไปint? หากเกี่ยวข้องจะใช้เพียงตัวเลขเล็ก ๆ <32
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.