ãã¹ã¯ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã32ããããã64ãããã¢ãã¬ãã·ã³ã°ã«ç§»è¡ããæã64ãããã¢ããªã¯OSã®ç§»è¡ã«å¿ èŠäžå¯æ¬ ã§ãããä»ãiOSã¯ãã¹ã¯ãããçŽã®ã¢ãŒããã¯ãã£ã«ãªã£ãŠããŠããŸããiOS 7ããã64ãããããã»ããµã掻çšããã¢ããªããã«ãããããšãã§ããŸãã64ãããããã»ãã·ã³ã°ããµããŒãããã¢ããªã¯ãåãããã€ã¹ã§åäœããŠãã32ãããã¢ããªãšæ¯èŒããŠãã»ãŒåžžã«è¯ãããã©ãŒãã³ã¹ãåŸãããšãã§ããŸãã
ç°ãªãã³ãŒããäžç·ã«åäœããªããŠã¯ãªããªãæãã©ã®ããã«æ¯ãèãã¹ããã«ã€ããŠãåºæºãšãªãåæèŠçŽã«åŸããªããŠã¯ãããŸãããèŠçŽã«ã¯å ±éããŒã¿åã®ãµã€ãºãšãã©ãŒããããäžæ¹ã®ã³ãŒããä»æ¹ã®ã³ãŒããã³ãŒã«ããå Žåã®ã€ã³ã¹ãã©ã¯ã·ã§ã³ãå«ãŸããŸããã³ã³ãã€ã©ã¯ãããã®èŠçŽãããŒã¹ã«å®è£ ãããŠããã®ã§ãå調ããŠåäœãããã€ããªã³ãŒããçæããããšãã§ããŸãããããã®èŠçŽãã¢ããªã±ãŒã·ã§ã³ãã€ããªã€ã³ã¿ãŒãã§ã€ã¹(ABI)ãšåŒã³ãŸãã
iOSã¢ããªã¯ãäœã¬ãã«ã®ã¢ããªã±ãŒã·ã§ã³ãã€ããªã€ã³ã¿ãŒãã§ã€ã¹ãšãObjective-Cèšèªãšã·ã¹ãã ãã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠèŠå®ãããã³ãŒãã£ã³ã°èŠçŽã«äŸåããŠããŸããiOS 7ãããããã€ãã®iOSããã€ã¹ã¯ã64ãããããã»ããµã䜿çšãã32ããããš64ãããã®ã©ã³ã¿ã€ã ç°å¢ãæäŸããŸããå€ãã®ã¢ããªã«ãšã£ãŠã64ãããã©ã³ã¿ã€ã ç°å¢ã¯ã倧ãã2ã€ã®ç¹ã«ãããŠ32ãããã©ã³ã¿ã€ã ç°å¢ãšç°ãªããŸãã
- 64ãããã©ã³ã¿ã€ã ã§ã¯ãCocoa Touchãã¬ãŒã ã¯ãŒã¯(ãšObjective-Cèšèªèªèº«)ã«ãã£ãŠäœ¿çšãããå€ãã®ããŒã¿åã¯ããµã€ãºãæ¡å€§ãããããå³å¯ãªã¡ã¢ãªã¢ã©ã€ã³ã¡ã³ãã«ãŒã«ãååšãããããŸãã
- 64ãããã©ã³ã¿ã€ã ã«ã¯ãé¢æ°åŒã³åºããããéã«äœ¿çšãããé©åãªé¢æ°ãããã¿ã€ããå¿ èŠã§ãã
CèšèªãObjective-Cèšèªã§ã¯ããã«ãã€ã³ã®ããŒã¿åã®ãµã€ãºãã¡ã¢ãªäžã§ã®ã¢ã©ã€ã³ã¡ã³ãã¯å®çŸ©ãããŠããŸããã代ããã«ãããããã®ãã©ãããã©ãŒã ãããããå®çŸ©ããŸããããã¯ãèšèªèŠçŽã«å®çŸ©ãããå¶çŽã«åã£ãäžã§ããã©ãããã©ãŒã ãããŒããŠã§ã¢ããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã«æããããããå€ã䜿çšããããšãã§ããããšãæå³ããŸããiOSäžã®64ãããã©ã³ã¿ã€ã ã¯ãå€ãã®ãã«ãã€ã³ã®ããŒã¿åã®ãµã€ãºãå€æŽããŠããŸããCocoa Touchã«ãã£ãŠäœ¿çšãããå€ãã®ããŒã¿åãå€æŽãããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãObjective-Cã§äžè¬çã«äœ¿çšãããããŒã¿åã®å€æŽã«ã€ããŠèª¬æããŸãã
32ãããã©ã³ã¿ã€ã ç°å¢ã¯ãILP32ãšåŒã°ããèŠçŽã䜿çšããŸããããã§ã¯ãintegerãšlong integerãšãã€ã³ã¿ã¯32ãããã®å€§ããã§ãã64ãããã©ã³ã¿ã€ã ç°å¢ã¯ãLP64ãšããèŠçŽã䜿çšããŸããintegerã¯32ãããã§ãããlong integerãšãã€ã³ã¿ã¯64ãããã®å€§ããã§ãã
次ã®ããŒãã«ã¯ãObjective-Cã«ãããŠå ±éã§äœ¿çšããããã¹ãŠã®integeråãèšèŒããŠããŸããããããã®ãšã³ããªãŒã¯ããŒã¿åã®ãµã€ãºãšã¡ã¢ãªäžã§ã®ã¢ã©ã€ã³ã¡ã³ãã§ãã匷調ãããŠãããšã³ããªãŒã¯ãLP64èŠçŽãILP32èŠçŽãšç°ãªã£ãŠããéšåã§ããããããµã€ãºã«å·®ãããéšåãã64ãããã©ã³ã¿ã€ã åãã«ã³ãŒããã³ã³ãã€ã«ãããæã«ã³ãŒãã®æ¯ãèããå€ããéšåã§ããã³ã³ãã€ã©ã¯64ãããã©ã³ã¿ã€ã åãã«ã³ã³ãã€ã«ããæã__LP64__ãã¯ããå®çŸ©ããŸãã
Integer data type | ILP32 size | ILP32 alignment | LP64 size | LP64 alignment |
---|---|---|---|---|
char | 1 byte | 1 byte | 1 byte | 1 byte |
BOOL, bool | 1 byte | 1 byte | 1 byte | 1 byte |
short | 2 bytes | 2 bytes | 2 bytes | 2 bytes |
int | 4 bytes | 4 bytes | 4 bytes | 4 bytes |
long | 4 bytes | 4 bytes | 8 bytes | 8 bytes |
long long | 8 bytes | 4 bytes | 8 bytes | 8 bytes |
pointer | 4 bytes | 4 bytes | 8 bytes | 8 bytes |
size_t | 4 bytes | 4 bytes | 8 bytes | 8 bytes |
NSInteger | 4 bytes | 4 bytes | 8 bytes | 8 bytes |
CFIndex | 4 bytes | 4 bytes | 8 bytes | 8 bytes |
fpos_t | 8 bytes | 4 bytes | 8 bytes | 8 bytes |
off_t | 8 bytes | 4 bytes | 8 bytes | 8 bytes |
次ã®ããŒãã«ã¯ãiOSãšOS Xã«ãããŠå ±éã§äœ¿çšãããæµ®åå°æ°ç¹åãèšèŒããŠããŸãããã«ãã€ã³ã®ããŒã¿åã®ãµã€ãºã¯å€æŽãããŠããŸãããã64ãããã©ã³ã¿ã€ã ã§ã¯CGFloatåã¯floatããdoubleã«å€æŽãããŠããŸããããã«ãããCore Graphicsã®åã䜿çšããQuartzãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãã¬ã³ãžã¯ãã倧ãããªãæ£ç¢ºã«ãªããŸãã
Floating-point type | ILP32 size | LP64 size |
---|---|---|
float | 4 bytes | 4 bytes |
double | 8 bytes | 8 bytes |
CGFloat | 4 bytes | 8 bytes |
64ãããARMç°å¢ã¯ããªãã«ãšã³ãã£ã¢ã³ã䜿çšããŸããããã¯ãARMããã»ããµãçšããããã€ã¹ã§åäœãã32ãããiOSã©ã³ã¿ã€ã ãšåãã§ãã
ã¢ããªã32ããããš64ãããã®äž¡æ¹ã®ã©ã³ã¿ã€ã ç°å¢åãã«ã³ã³ãã€ã«ãããšãã¯ãç°å¢ã«ãã£ãŠã¢ããªã®æ¯ãèããç°ãªããããã©ãŒãã³ã¹ã®å·®ãäºææ§ã®åé¡ãããããããšã«çæããŠãã ããã
-
ã¡ã¢ãªè² è·ã®å¢å€§
å€ãã®åºæ¬çãªåã®ãµã€ãºã倧ãããªãããã64ãããçã®ã¢ããªã¯32ãããçãããå€ãã®ã¡ã¢ãªã䜿çšããŸããäŸãã°ããªã³ã¯ãªã¹ãã®ãããªã·ã³ãã«ãªãã®ã§ãã£ãŠãã64ãããã©ã³ã¿ã€ã åãã«ã³ã³ãã€ã«ãããšã¡ã¢ãªäœ¿çšéãå€ããªããŸãã
-
64ããããš32ãããã®ãœãããŠãšã¢éã§ã®ããŒã¿äº€æ
32ããããš64ãããã®ãœãããŠãšã¢ããªãªãŒã¹ããå ŽåãåãããŒã¿ãäž¡æ¹ã®ããŒãžã§ã³ããæäœããå¿ èŠãããå ŽåããããŸããäŸãã°ãiCloudã«ä¿åããŠãããã¡ã€ã«ã«å¯ŸããŠããŠãŒã¶ãŒã¯32ããããš64ãããã®äž¡æ¹ã®ããã€ã¹ããã¢ã¯ã»ã¹ãããããããŸããããããã¯ãããã€ã¹éã§ãããã¯ãŒã¯ããŒã¿ãéä¿¡ããã²ãŒã ãäœããããããŸãããäž¡æ¹ã®ã©ã³ã¿ã€ã ã«ãããŠãèªã¿æžããããããŒã¿ã¯å ±éã®ã¡ã¢ãªã¬ã€ã¢ãŠãã䜿çšããããã«ããŠãã ãããã€ãŸããå šãŠã®ããŒã¿ãšã¬ã¡ã³ãã®ãµã€ãºãšãªãã»ãããåäžãšãªãããã«ããŠãã ããã
-
èšç®çµæãç°ãªãå¯èœæ§
64ãããintegerã¯ã32ãããintegerãããéåžžã«å€§ããªã¬ã³ãžã®å€ããµããŒãããŸããã¢ããªã32ããããã64ãããã«å€æŽãããintegeråã䜿çšããå Žåããã®çµæã¯64ãããããŒãžã§ã³ã§ã¯ç°ãªãå¯èœæ§ããããŸããç¹ã«ã32ãããintegerã®æ倧å€ãè¶ ãããããªèšç®ãããå Žåã32ãããintegerã§ã¯ãªãŒããŒãããŒãçºçããŸãã64ãããintegerã§ã¯çºçããŸããã
-
倧ããªãµã€ãºã®ããŒã¿åããå°ããªããŒã¿åã«ã³ããŒãããæã«å€ãåãæšãŠãããå¯èœæ§
ããã€ãã®ã¢ããªã®äžã«ã¯ã2ã€ã®ããŒã¿åã®éã§å€ãå®å šã«å€æããã®ã§ã¯ãªãã2ã€ã¯åãã§ãããšä»®å®ããŠãããã®ããããŸãã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ãããŒã¿åã«ã€ããŠã®ãã®ä»®å®ã¯ãã¯ãæ£ãããªãå¯èœæ§ããããŸããäŸãã°ãNSIntegerã®å€ãintåã«ä»£å ¥ããå Žåã32ãããã©ã³ã¿ã€ã ã«ãããŠã¯ã©ã¡ãã®åã32ãããintegerãªã®ã§åäœããŸãããããã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ãããã2ã€ã¯åãåã§ã¯ãªããããããŒã¿ã倱ãããå¯èœæ§ããããŸãã
é¢æ°åŒã³åºããè¡ãªãããæãã³ã³ãã€ã©ã¯åŒã³åºãåŽããåŒã³åºãããåŽã«å¯ŸããŠãã©ã¡ãŒã¿ãæž¡ãã³ãŒããçæããŸããäŸãã°ãABIã¯åŒã³åºãåŽããã©ã¡ãŒã¿ãã¬ãžã¹ã¿ã«æ ŒçŽããããæå®ãããããããŸããããŸãã¯ãåŒã³åºãåŽãå€ãã¡ã¢ãªäžã®ã¹ã¿ãã¯ã«ããã·ã¥ããããæå®ãããããããŸãããéåžžã¯ãã¢ã»ã³ãã©èšèªãæžããŠããã®ã§ã¯ãªãéããåŒã³åºãèŠçŽã¯ããŸãéèŠã§ã¯ãããŸããããããã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ãé¢æ°åŒã³åºãã®æ¹æ³ãæ°ã«ããå¿ èŠãããå ŽåããããŸããå¯å€åŒæ°ãåãåãé¢æ°ã¯ãåºå®ã®ãã©ã¡ãŒã¿ãåãåãé¢æ°ãšæ¯ã¹ãŠãããã€ãã®ç°ãªãèŠçŽã䜿ã£ãŠåŒã³åºãããŸãã
64ãããã©ã³ã¿ã€ã åãã®ã¢ããªãã³ãŒãã£ã³ã°ããå Žåãã¢ããªã¯åžžã«æ£ç¢ºãªå®çŸ©ã«åºã¥ããŠé¢æ°ãåŒã³åºãå¿ èŠããããŸãã
- å šãŠã®é¢æ°ã¯ãããã¿ã€ããæã€å¿ èŠããããŸãã
- é¢æ°ããã£ã¹ãããå Žåããã£ã¹ãããããŒãžã§ã³ã®é¢æ°ãããªãªãžãã«ã®é¢æ°ãšåãã·ã°ããã£ãæã€ããã«æ³šæããªããã°ãããŸãããç¹ã«ãå¯å€åŒæ°ããšãé¢æ°ã®ãã€ã³ã¿ãåºå®åŒæ°ããšãé¢æ°ã«ãã£ã¹ããããªã©ãç°ãªããã©ã¡ãŒã¿ãæã€é¢æ°ã«ãã£ã¹ãããããšã¯é¿ããŠãã ããã
ããObjective-Cã©ã³ã¿ã€ã ããã€ã¬ã¯ãæ±ããããªäœã¬ãã«ã®ã³ãŒããæžããŠããå Žåããªããžã§ã¯ãã®isaãã€ã³ã¿ã«ã¯ããçŽæ¥ã¢ã¯ã»ã¹ããããšã¯ã§ããªãããšã«æ³šæããŠãã ããã代ããã«ããã®æ å ±ã«ã¢ã¯ã»ã¹ããããã®ã©ã³ã¿ã€ã é¢æ°ã䜿çšããå¿ èŠããããŸãã
64ãããARMã€ã³ã¹ãã©ã¯ã·ã§ã³ã»ããã¯ã32ãããã®ã€ã³ã¹ãã©ã¯ã·ã§ã³ã»ãããšããã¹ãŠå€§ããç°ãªã£ãŠããŸããããããªãã®ã¢ããªãã¢ã»ã³ããªèšèªã®ã³ãŒããå«ãã§ããå Žåãæ°ããã€ã³ã¹ãã©ã¯ã·ã§ã³ã»ããã䜿çšããããæžãæããå¿ èŠããããŸãããŸããiOSã®64ãããåŒã³åºãèŠçŽã¯ARMæšæºã®ãã®ãšã¯ç°ãªã£ãŠããããšã«æ³šæããŠãã ããã
æŠèŠãšããŠã¯ãããªãã®ã³ãŒãã64ãããã¯ãªãŒã³ã«ããã«ã¯ã次ã®ããšã«åŸãå¿ èŠããããŸãã
- 64ãããé·ã®integerã32ãããé·ã®integerã«ä»£å ¥ããªãã§ãã ãã
- 64ããããã€ã³ã¿ã32ãããintegerã«ä»£å ¥ããªãã§ãã ãã
- ç®è¡æŒç®æã«ãã€ã³ã¿ãšlong integerãåãæšãŠãããªãããã«ããŠãã ãã
- ããŒã¿åã®ãµã€ãºå€æŽã«äŒŽãã¢ã©ã€ã³ã¡ã³ãã®åé¡ãä¿®æ£ããŠãã ãã
- 32ããããš64ãããã©ã³ã¿ã€ã ã®éã§å ±æãããã¡ã¢ãªæ§é ãåãã¬ã€ã¢ãŠããšãªãããã«ããŠãã ãã
- ã¢ã»ã³ããªèšèªãæžãæããæ°ãã64bitãªãã¬ãŒã·ã§ã³ã³ãŒããšã©ã³ã¿ã€ã ã䜿çšããããã«ããŠãã ãã
- å¯å€åŒæ°åã®é¢æ°ãåºå®åŒæ°ã®é¢æ°ã«ãã£ã¹ããããããã®éãããªãã§ãã ãã
32ããããš64ãããã©ã³ã¿ã€ã ç°å¢ã®äž¡æ¹ã§åäœããã¢ããªãäœãã«ã¯ã次ã®ãããªã¹ãããããããŸãã
- Xcode 5ãã€ã³ã¹ããŒã«ããŠãã ããã
- ãããžã§ã¯ããéããŠãã ããã
Xcodeã¯ãããžã§ã¯ããæ°ãããã©ãŒãããã«ããããä¿ããŸãããããžã§ã¯ããææ°åãããšã64ãããåãã®ã¢ããªãã³ã³ãã€ã«ããéã«ãæ°ãããŠã©ãŒãã³ã°ãšãšã©ãŒã衚瀺ãããããã«ãªããŸãã
- ãããžã§ã¯ãã®èšå®ãiOS 7以éããµããŒãããããå€æŽããŸãã
iOS 7ããåã®ããŒãžã§ã³ãã¿ãŒã²ããã«ããŠãããšã64ãããã®ãããžã§ã¯ãããã«ãããããšãã§ããŸããã
- Build Settingsã®ArchitecturesãâStandard Architectures (including 64-bit)âã«å€æŽããŠãã ããã
- 64ãããã©ã³ã¿ã€ã ç°å¢ããµããŒãããããã¢ããªãå€æŽããŠãã ããã
æ°ããã³ã³ãã€ã©ã®ã¯ãŒãã³ã°ãšãšã©ãŒãããã®ããã»ã¹ã容æã«ããŸããããããã³ã³ãã€ã©ãå šãŠã®ä»äºãããŠãããããã§ã¯ãããŸãããã³ãŒãã®èª¿æ»ã«ãã®ããã¥ã¡ã³ãã圹ç«ãŠãŠãã ããã 6. å®éã®64ãããããŒããŠã§ã¢äžã§ã¢ããªããã¹ãããŠãã ããã
iOSã·ãã¥ã¬ãŒã¿ãéçºäžã¯åœ¹ã«ç«ã¡ãŸããããããé¢æ°åŒã³åºãèŠçŽã®ãããªããã€ãã®å€æŽã¯ãã¢ããªãããã€ã¹äžã§åäœããå Žåã®ã¿ç¢ºèªå¯èœã§ãã 7. ã¡ã¢ãªããã©ãŒãã³ã¹ã調æŽããããã«ãInstrumentsã䜿çšããŠãã ããã
以éã§ã¯ãCocoa Touchã¢ããªã64ãããã©ã³ã¿ã€ã ç°å¢ã«ããŒãã£ã³ã°ããéã«ããçºçããåé¡ã«ã€ããŠèª¬æããŸãã
ãã€ã³ã¿ãintegeråã«ãã£ã¹ãããçç±ã¯ã»ãšãã©ãããŸããããã€ã³ã¿åãäžè²«ããŠäœ¿çšããããšã«ãã£ãŠãå šãŠã®å€æ°ãã¢ãã¬ã¹ãä¿æããã®ã«ååãªãµã€ãºãæã€ããã«ããããšãã§ããŸãã
äŸãã°ã次ã®ã³ãŒãã¯ãã€ã³ã¿ãintåã«ãã£ã¹ãããŠããŸããããã¯ã¢ãã¬ã¹ãç®è¡æŒç®ããããã§ãã32ãããã©ã³ã¿ã€ã ã«ãããŠã¯ããã®ã³ãŒãã¯åäœããŸããintåãšãã€ã³ã¿ã¯åããµã€ãºã ããã§ãããããã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ããã€ã³ã¿ã¯intåãã倧ããã®ã§ããã®ä»£å ¥ã¯ãã€ã³ã¿ã®ããŒã¿ã倱ããŸãããã®å Žåã¯ããã€ã³ã¿ããã€ãã£ããµã€ãºåå¢ããã°ããã®ã§ãåã«ãã€ã³ã¿ãã€ã³ã¯ãªã¡ã³ãããŠãã ããã
int *c = something passed in as an argument....
int *d = (int *)((int)c + 4); // Incorrect.
int *d = c + 1; // Correct!
ãããã€ã³ã¿ãintegeråã«å€æããªããã°ãªããªãå Žåã¯ãåãæšãŠãããªãããã«ããããã«ãåžžã«uintptr_tåã䜿çšããŠãã ããããã€ã³ã¿ã®å€ãintegerã®ç®è¡æŒç®ã§å€æŽãããã€ã³ã¿ã«å€æããŠæ»ããšãåºæ¬çãªãšã€ãªã¢ã·ã³ã°ã«ãŒã«ã«éåããå¯èœæ§ãããã®ã§æ³šæããŠãã ããã
å€ãã®å ±éããããã°ã©ãã³ã°ãšã©ãŒã¯ãã³ãŒãã®äžã§ããŒã¿åãäžè²«ããŠäœ¿çšããªãå Žåã«çºçããŸããããŒã¿åãäžè²«ããŠäœ¿çšããªãããšã«ã€ããŠãã³ã³ãã€ã©ãããããã®åé¡ãèŠåããŠãããŸããããããã®ãã¿ãŒã³ã«ã€ããŠããã€ãã®ããªãšãŒã·ã§ã³ãç解ããŠãããšåœ¹ã«ç«ã¡ãŸãã
é¢æ°ãåŒã³åºããšããçµæãåãåãå€æ°ãšé¢æ°ã®è¿ãå€ã®æ¹ãåžžã«äžèŽãããããã«ããŸãããããè¿ãå€ã®åãåãåãå€æ°ã®åãã倧ããå Žåãå€ã¯åãæšãŠãããŸãã次ã®äŸã¯ããã®åé¡ã瀺ãã·ã³ãã«ãªãã¿ãŒã³ã§ããPerformCalculationé¢æ°ã¯ãlong integerãè¿ããŸãã32ãããã©ã³ã¿ã€ã ã«ãããŠã¯ãintãšlongã¯ã©ã¡ãã32ãããã§ãããã®ãããã³ãŒããæ£ãããªããŠãintåãžã®ä»£å ¥ã¯ããŸãè¡ããŸãã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ãä»£å ¥æã«è¿ãå€ã®äžäœ32ãããã倱ãããŸããçµæã¯long integerã«ä»£å ¥ãã¹ãã§ããããããã°ãã©ã¡ãã®ã©ã³ã¿ã€ã äžã§ãåäœããŸãã
long PerformCalculation(void);
int x = PerformCalculation(); // incorrect
long y = PerformCalculation(); // correct!
å€ããã©ã¡ãŒã¿ãšããŠæž¡ãå Žåãåãåé¡ãçºçããŸããäŸãã°ã次ã®äŸã§ã¯ã64ãããã©ã³ã¿ã€ã ã«ãããŠãå ¥åãã©ã¡ãŒã¿ãåãæšãŠãããŸãã
int PerformAnotherCalculation(int input);
long i = LONG_MAX;
int x = PerformCalculation(i);
次ã®äŸã§ã¯ã64ãããã©ã³ã¿ã€ã ã«ãããŠãè¿ãå€ãåãæšãŠãããŸããè¿ãå€ãé¢æ°ã®è¿ãå€ã®åã®ç¯å²ãè¶ ããŠããããã§ãã
int ReturnMax()
{
return LONG_MAX;
}
ãããã®äŸã¯ãå šãŠintãšlongãåãã§ãããšä»®å®ããŠããäºã«ãããã®ã§ããANSI Cæšæºã¯ããã®ããã«ä»®å®ãããŠããŸããããããŠ64ãããã©ã³ã¿ã€ã äžã§åäœããéã¯ãæããã«æ£ãããããŸãããããã©ã«ãã§ã¯ããããžã§ã¯ããææ°åãããšã-Wshorten-64-to-32ã³ã³ãã€ã©ãªãã·ã§ã³ãèªåçã«æå¹åãããŸãããããŠã³ã³ãã€ã©ã¯å€ãåãæšãŠãããå€ãã®ã±ãŒã¹ã«ã€ããŠèªåçã«èŠåããŸãããããžã§ã¯ããææ°åããªãå Žåã¯ãæ瀺çã«ãã®ã³ã³ãã€ã©ãªãã·ã§ã³ãæå¹åãã¹ãã§ããããåé·ã§ããããæœåšçãªãšã©ãŒãèŠã€ããããšãã§ãã-Wconversionãªãã·ã§ã³ãå«ãããšãããããããŸããã
Cocoa Touchã¢ããªã§ã¯ã次ã®integeråãæ€çŽ¢ãããããªããããããæ£ãã䜿çšããŠããã確èªãããŸãã
- long
- NSInteger
- CFIndex
- size_t (sizeofã®çµæ)
äž¡æ¹ã®ã©ã³ã¿ã€ã ç°å¢ã«ãããŠãfpos_tãšoff_tåã¯64ãããã®ãµã€ãºã§ããããããintåã«ä»£å ¥ããªãã§ãã ããã
NSIntegerã¯ã64ãããã³ãŒãã§ãµã€ãºãå€ãããŸããNSIntegeråã¯Cocoa Touchå šäœã§äœ¿çšãããŠããŸããNSIntegerã¯ã32ãããã©ã³ã¿ã€ã ã«ãããŠã¯ã32ãããã§ãã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ã64ãããã§ãããã®ããããã¬ãŒã ã¯ãŒã¯ã¡ãœããNSIntegeråã§ããæ å ±ãåãåãå Žåã¯ãNSIntegeråã®å€æ°ã«æ ŒçŽããŠãã ããã
NSIntegeråãintåãšåããµã€ãºã§ãããšæ±ºããŠä»®å®ããŠã¯ãããŸããããããã€ãã®éèŠãªäŸããããŸãã
-
NSNumberãªããžã§ã¯ãããã®ããŸãã¯NSNumberãªããžã§ã¯ãã«å¯Ÿããå€æã
-
NSCoderã¯ã©ã¹ã䜿çšããããŒã¿ã®ãšã³ã³ãŒããšãã³ãŒãã
ç¹ã«ã64ãããããã€ã¹äžã§NSIntegerããšã³ã³ãŒããããã®åŸ32ãããããã€ã¹äžã§ãã³ãŒããããšãå€ã32ãããintegerã®ç¯å²ãè¶ ããæã«ãã³ãŒãã¡ãœããã¯äŸå€ãã¹ããŒããŸãã代ããã«æ瀺çãªintegeråã䜿çšããã»ãããããããããŸããã
-
ãã¬ãŒã ã¯ãŒã¯å ã§NSIntegerãšããŠå®çŸ©ãããŠããå®æ°ã䜿çšããå Žåãç¹ã«æ³šæãã¹ããªã®ã¯ãNSNotFoundå®æ°ã§ãã64ãããã©ã³ã¿ã€ã ã«ãããŠã¯ããã®å€ã¯intåã®ç¯å²ãã倧ãããã®ãšãªããŸãããã®ããããã®å€ãåãæšãŠããããšããšã©ãŒãåŒãèµ·ããäºã«ãªããŸãã
CGFloatã¯ã64ãããã³ãŒãã§ãµã€ãºãå€ãããŸããCGFloatåã¯64ãããæµ®åå°æ°ç¹ã«å€ãããŸããNSIntegeråãšåãããã«ãCGFloatãfloatãŸãã¯doubleã§ãããšä»®å®ããŠã¯ãããŸããã
// Incorrect.
CGFloat value = 200.0;
CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &value);
// Correct!
CGFloat value = 200.0;
CFNumberCreate(kCFAllocatorDefault, kCFNumberCGFloatType, &value);
ã«ã¹ã¿ããŒã¯æ¢ã«32ãããããŒãžã§ã³ã®ã¢ããªã䜿çšããŠãããä»åŸäœå¹Žã䜿ãç¶ããŸããåžžã«64ãããintegerã䜿çšããããã³ãŒããå€æããããšãè¯ã解決çã®ããã«æãããããããŸããããããã§ã¯ãããŸããã64ãããããã»ããµã¯ã64ãããintegerã®æäœã32ããããšåããããã®é床ã§è¡ãããšãã§ããŸããã32ãããããã»ããµã¯ã64ãããã®æäœãè¡ããšéåžžã«é ããªããŸããããããªããåžžã«64ãããåã䜿çšããããããªãã®32ãããã¢ããªã¯çŸåšã®ããŒãžã§ã³ãããããã©ãŒãã³ã¹ãæªããªãã§ããããããã§ã¯ãªããèšç®ããŠæ ŒçŽããã®ã«å¿ èŠãªå€ã®ç¯å²ã«ãããããintegeråã䜿çšããŠãã ãããçµæã32ãããintegerã«åãŸãããã§ããã°ã32ãããintegerã䜿çšããŠãã ããã