16

If NSInteger is just like a regular int then why does it exist and what is its purpose in being called NSInteger?

I'm new to Mac OS X programming and we'll be having a report for this.

Basil Bourque
  • 303,325
  • 100
  • 852
  • 1,154
Vincent Bacalso
  • 2,071
  • 4
  • 23
  • 34

3 Answers3

22

It's an architecture-safe (64 vs 32 bit) type to support different platforms and implementations of C.

Apple recommends that you use NSInteger over normal types anyway, I would assume for portability!

You can read more at this Foundation Types Reference.

Basic description:

When building 32-bit applications, NSInteger is a 32-bit integer. A 64-bit application treats NSInteger as a 64-bit integer.

Rudi Visser
  • 21,350
  • 5
  • 71
  • 97
2

Other than the typedef being different on different systems (long on 64-bit systems, int on 32-bit), there isn't much of a reason.

Arguably, it gives the impression that an NSInteger is an object, when it's not.

Wooble
  • 87,717
  • 12
  • 108
  • 131
1

A NSInteger will be 4 bytes on a 32-bit machine and 8 on a 64-bit.

Nyx0uf
  • 4,609
  • 1
  • 25
  • 26