Dimaã¯ã»ãŒ2幎éããã°ã©ãã³ã°ãè¡ã£ãŠãããèªåã§èšèªãåŠãã§ããŸãã ããã¥ã¡ã³ãã誰ãã®ã³ãŒãã 圌ã¯ããã®ãµããããŠã¯ããŸãããã圌ã®çµéšã¯Swiftã§ã³ãŒãã£ã³ã°ãéå§ããããšãæ€èšããŠããå€ãã®äººã«ãšã£ãŠæçšã§ãã å®éšã芳å¯ããã³çµè«ã ãã£ã¹ã«ãã·ã§ã³ã«ãæåŸ ããŸãïŒ æ¬¡ã¯èè ã®ããã¹ãã§ãã
ã¯ããã«
IOSã®å·çãå§ãããšãïŒãããŠããã¯ããã»ã©æã§ã¯ãããŸããã§ããïŒãObjective-Cã¯ç§ãããããæ··ä¹±ãããŸããã ç解ããã®ãé£ãããšããããã§ã¯ãªããæ§æã¯éåžžã«çããããã«èŠããŸããã æéãçµã€ã«ã€ããŠããã¡ããããã«æ £ããŸããããæåã®æ©äŒã«Swiftã®å€èŠ³ãç¥ã£ããšããæ°ãããããžã§ã¯ããæžãå§ããŸããã
ããã«ãçããããšãã§ããç¬éããããŸãã ç§ã¯ãã®ãã¹ãŠã«ã€ããŠæšæž¬ãããã£ãã§ãã äœæ¥äžã«æ°ä»ããç©è°ãéžãç¹ã«ã€ããŠã説æãšäžè¬åãè©Šã¿ãŸããã
éçºã®çµãããšãã®èšäºã®å·çã®çµããã«åãã£ãŠãç§ã¯XcodeãæŽæ°ããSwiftãããŒãžã§ã³1.2ã«æŽæ°ããŸããã ç§ãææããåé¡ã®ããã€ãã¯é¢é£æ§ã倱ã£ãããšãå€æããŸããã ããã§ããé¢é£æ§ã倱ããªãçµè«ã瀺ããŠããã®ã§ãç§ã¯ããããããã¹ãã«æ®ããŸããã
äºææ§ã«ã€ããŠ
æåã®é倧ãªåŒ±ç¹ã¯ãçŽç²ãªCãšã®äºææ§ã§ããSwiftã¯ãObjCãšå®å šã«äºææ§ããããŸãã ObjCã¯Cãšå®å šã«äºææ§ããããŸããSwiftã¯Cãšäºææ§ããããŸããïŒ ã¯ãã Swiftã®äœæè ã¯ãObjCã ãã§ãªãCãžã®ç¹å¥ãªæ©æž¡ããè¡ããŸããããããŠãC APIãšå¯Ÿè©±ããæ¹æ³ã«é¢ããããã¥ã¡ã³ãã®ã»ã¯ã·ã§ã³ããããŸãã Core FoundationïŒåãªãC-APIïŒã䜿çšããããšãããšãã«åé¡ãçºçããŸããã CFNotificationCenterAddObserverã¯ãCé¢æ°ãžã®ãã€ã³ã¿ãŒããã©ã¡ãŒã¿ãŒãšããŠäœ¿çšããŸãïŒåæ§ã®ãã©ã¡ãŒã¿ãŒã«ã¯ããããããã®ã©ã€ãã©ãªãŒããä»ã®äŸ¿å©ãªé¢æ°ããããŸãïŒã Swiftã§ã¯ãCé¢æ°ãžã®ãã€ã³ã¿ãŒãäœæã§ããŸãïŒCFunctionPointerãæäŸãããŸãïŒããswiftãã¡ã€ã«èªäœã«æžã蟌ãããšã¯ã§ããŸãããæ§æã¯ç°ãªããŸãïŒ ã€ãŸããObjCã®å ŽåãCãšã®äºææ§ã¯ãã©ãã§ãCã§ã®èšè¿°ãéå§ããä»ã®å ŽæïŒã©ã€ãã©ãªïŒããCã³ãŒãã䜿çšã§ãããšããäºå®ã«ãããŸãããSwiftã®å Žåãã©ã€ãã©ãªãŸãã¯ãµãŒãããŒãã£ã®Cã®ã¿ã䜿çšã§ããŸããŸãã¯objcãã¡ã€ã«ã å°ãç°ãªãäºææ§ã äºçŽ°ãªããšã®ããã«æããŸãããå ·äœçãªç¶æ³ã¯æ¬¡ã®ãšããã§ããSwiftã®ã¿ã§èšè¿°ããå ŽåãDarwinéç¥ã䜿çšã§ããªããªããŸãã
ã€ã³ã¿ãŒããããœãªã¥ãŒã·ã§ã³
swiftã®Cé¢æ°ãžã®ãã€ã³ã¿ãŒã¯CFunctionPointerã§ãã çè«çã«ã¯ãè¿
éãªé¢æ°ãžã®ãã€ã³ã¿ããäœæã§ããŸããããã¹ãŠãã©ã®ããã«æ©èœããã®ãããããŸããã ã€ã³ã¿ãŒãããããã®èª¬æãSwiftã§Cé¢æ°ãžã®ãã€ã³ã¿ãŒãäœæããæ¹æ³ã¯ã次ã®ããã«ãªããŸãã
Cã§ã®ãã®é¢æ°ãžã®ãã€ã³ã¿ãŒã¯intïŒ*ïŒïŒvoidïŒåã§ãSwiftã§ã¯CFunctionPointer <ïŒïŒ-> Int32>åã§ãã CFunctionPointerãäœæããã«ã¯ãCOpaquePointerãå¿ èŠã§ããäŸãã°ïŒ
let pointer = UnsafeMutablePointer <ïŒïŒ-> Int32> .allocïŒ1ïŒ
pointer.initializeïŒgetNextRandomValueïŒ
let cPointer = COpaquePointerïŒãã€ã³ã¿ãŒïŒ
let functionPointer = CFunctionPointer <ïŒïŒ-> Int32>ïŒcPointerïŒ
é¢æ°ãžã®ãã€ã³ã¿ãŒãä»ããŠé¢æ°ãåŒã³åºãã«ã¯ã次ã®æé ãå®è¡ããŸãã
let newCPointer = COpaquePointerïŒfunctionPointerïŒ
let newPointer = UnsafeMutablePointer <ïŒïŒ-> Int32>ïŒnewCPointerïŒ
let rNumber = newPointer.memoryïŒïŒ
ãµã³ãããã¯ã¹ã§è©ŠããŠã¿ãŸããããæåã¯è¿ éã«æžãããé¢æ°ãæ»ãããŸããã æåŸã®è¡ã§ã¯ãé¢æ°ãå®è¡ãããŸãã ã¯ã€ã³ã®ããã«èŠããŸãããäœããã®çç±ã§ããã°ã©ã ãæ©èœããŸããã§ããã ããã°ã©ã ã¯ã³ã³ãã€ã«ãããé¢æ°ãžã®ãã€ã³ã¿ãäœæããããªããžã§ã¯ãã¯éç¥ããµãã¹ã¯ã©ã€ãããŠåä¿¡ããŸãããåä¿¡ãããšãã¢ããªã±ãŒã·ã§ã³ã¯ãšã©ãŒãªãã§ã¯ã©ãã·ã¥ããŸãã ããçš®ã®ã€ã³ããã¯ã¹ã¯éåžžã«é«å質ã§ã¯ãããŸããããç§ã®ç¥èã¯ç解ããã®ã«ååã§ã¯ãããŸããã
Cã§ã®ãã®é¢æ°ãžã®ãã€ã³ã¿ãŒã¯intïŒ*ïŒïŒvoidïŒåã§ãSwiftã§ã¯CFunctionPointer <ïŒïŒ-> Int32>åã§ãã CFunctionPointerãäœæããã«ã¯ãCOpaquePointerãå¿ èŠã§ããäŸãã°ïŒ
let pointer = UnsafeMutablePointer <ïŒïŒ-> Int32> .allocïŒ1ïŒ
pointer.initializeïŒgetNextRandomValueïŒ
let cPointer = COpaquePointerïŒãã€ã³ã¿ãŒïŒ
let functionPointer = CFunctionPointer <ïŒïŒ-> Int32>ïŒcPointerïŒ
é¢æ°ãžã®ãã€ã³ã¿ãŒãä»ããŠé¢æ°ãåŒã³åºãã«ã¯ã次ã®æé ãå®è¡ããŸãã
let newCPointer = COpaquePointerïŒfunctionPointerïŒ
let newPointer = UnsafeMutablePointer <ïŒïŒ-> Int32>ïŒnewCPointerïŒ
let rNumber = newPointer.memoryïŒïŒ
ãµã³ãããã¯ã¹ã§è©ŠããŠã¿ãŸããããæåã¯è¿ éã«æžãããé¢æ°ãæ»ãããŸããã æåŸã®è¡ã§ã¯ãé¢æ°ãå®è¡ãããŸãã ã¯ã€ã³ã®ããã«èŠããŸãããäœããã®çç±ã§ããã°ã©ã ãæ©èœããŸããã§ããã ããã°ã©ã ã¯ã³ã³ãã€ã«ãããé¢æ°ãžã®ãã€ã³ã¿ãäœæããããªããžã§ã¯ãã¯éç¥ããµãã¹ã¯ã©ã€ãããŠåä¿¡ããŸãããåä¿¡ãããšãã¢ããªã±ãŒã·ã§ã³ã¯ãšã©ãŒãªãã§ã¯ã©ãã·ã¥ããŸãã ããçš®ã®ã€ã³ããã¯ã¹ã¯éåžžã«é«å質ã§ã¯ãããŸããããç§ã®ç¥èã¯ç解ããã®ã«ååã§ã¯ãããŸããã
ç§ã®æ±ºæ
ObjCã§ã¯ã©ã¹ãäœæããŸããã ãããŠããããç¶æ¿ããå¿
èŠããã£ããšã-ã¹ãŠã£ããã®çžç¶äººã
ããã«äžè¬çãªããšã«ç§»ããŸãããã Swiftã®ãå®å šãªäºææ§ãïŒObjCãšïŒã«ã€ããŠèšãã°ãObjCããã®ãã¹ãŠã®ãã®ã¯Swiftã§çŽæ¥ã¢ã¯ã»ã¹ã§ããã®ã§ã¯ãªããããªããžãä»ããŠã¢ã¯ã»ã¹ã§ããããšã«çæããŠãã ããã æãåçŽãªäŸïŒNSArray-> [AnyObject]ãNSDictionary-> [NSObjectïŒAnyObject]ãããã³è¿ éãªè¡ïŒStringïŒã«ã¯NSStringããã®é¢æ°ãããããã«èŠããŸããããã¹ãŠã§ã¯ãªãïŒããšãã°ãé·ãïŒãéå§ããã°ããŒãã«é¢æ°ã®æobjc_ã§ã ã»ãšãã©ã®å ŽåãObjCããSwiftã«äœãã翻蚳ãããšããAnyObjectã衚瀺ãããŸãã ç§ã¯çç±ãç¥ã£ãŠããŸãããä»ã§ã¯ãããã«ã€ããŠã§ã¯ãªããçµæã«ã€ããŠã§ãã ãã¡ãããæ©äŒãšããŠAnyObjectãå¿ èŠã§ãããããŸããŸãªç¶æ³ããããŸãã ãã ããSwiftã¯å³å¯ãªåæå®ïŒã³ãŒãã®ä¿¡é Œæ§ãé«ããïŒãç¹åŸŽãšããããããã®äœ¿çšã¯èšèªã®ã€ããªãã®ãŒã«ãããã«åããŸãã ãŸããAppleã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããå Žåãé¢æ°ã®ãã¹ãŠã®å Žæã«AnyObjectã衚瀺ãããŸãããããã¯ãã¹ãŠObjCäžã«ããããã§ãã ãã®çµæãæšæºã©ã€ãã©ãªãã2çªç®ããšã®é¢æ°ã®çµæãç®çã®åã«ãã£ã¹ãããå¿ èŠããããŸãã ãããŠãç¥ã¯ããªããã¿ã€ããã©ãããã¹ãããæšæž¬ãããæ··åãããããããšãçŠããŠããŸãïŒ [ç§ã¯ããªãããã§ãã¯ãè¡ãããšãã§ããããšãç¥ã£ãŠããŸãããçªç¶ã³ãŒãã®ç°¡æœããšåçŽãããã¹ãŠã©ããã«æ¶ããŸã]ã
ãã®ãããå€æ°ã®ã¿ã€ãã瀺ã矩åããããšããäºå®ã«ãããæ°ãããããä¿¡é Œæ§ã®é«ãèšèªãæäŸããŸãã ããããæšæºã©ã€ãã©ãªã®é¢æ°ã¯ãã°ãã°åæå®ãããŠããªããªããžã§ã¯ããè¿ããŸãã ãã¡ããããå®å šãªäºææ§ãã®æ¡ä»¶ã«éåããããšã¯ãããŸãããããã®æç¹ã§ç§ã¯ãã§ã«å°ãè³éãã§ãã
ãªãã·ã§ã³ã®å€æ°ã䜿çšããããã軜ã圢åŒã§ã¯ããããåæ§ã®ç¶æ³ã ãªãã·ã§ã³ã®å€æ°ã¯ãèšèªã®ããŒã«ãšåŒã¶ããšãã§ããŸãããè¿ éã«ææ¡ããã¹ã¿ã€ã«ã§èšè¿°ããå Žåã¯ãéåžžã«ãŸãã«äœ¿çšããå¿ èŠããããŸãã NSã¯ã©ã¹ã®é¢æ°ã¯ã1ãããªãã·ã§ã³ãè¿ããŸãã ãŸããäºææ§ã®ããã«ããã°ã©ãã³ã°ã¹ã¿ã€ã«ãå€æŽããããšãã§ããŸãã
[ 1.2ã§å»æ¢äºå® ]
詳现ã«æ»ããŸãããã Foundationã«ã¯ãSwiftã§ã¯ãŸã å©çšã§ããªããã®ããããŸãã ããšãã°ãNSDecimalã¯ã©ã¹ã ããã¥ã¡ã³ãã«ã¯è¿ éãªèª¬æãå«ãŸããŠããŸãããã䜿çšããããšã¯ã§ããŸããã§ããã ãããã£ãŠãObjCé¢æ°ã®å ¥åãã©ã¡ãŒã¿ãŒãŸãã¯åºåãã©ã¡ãŒã¿ãŒãšããŠNSDecimalããã£ãå ŽåãSwiftã§è¡šç€ºãããŸããã§ããã ãããŠã圌ããæžããå Žåããšã©ãŒã®ããã«ã³ã³ãã€ã«ãããŸããã§ããã ãã ããGoogleã«ãããšãCore Plotã©ã€ãã©ãªã®ãŠãŒã¶ãŒãé€ããŠïŒãã®åé¡ã«ãééããããïŒããã®ã¯ã©ã¹ã¯å®éã«ã¯èª°ãå¿ èŠãšããŸããã§ããã 確ãã«ã1.2ã§ã¯äœ¿çšã§ããããã«ãªããŸããã ããããããã¯ç§ãã¡ããã©ééããããšã§ãã ãããŠç¢ºãã«ãã³ã¡ã³ãã«ããã¢ã¯ã»ã¹ã§ããªãã¯ã©ã¹ã®ä»ã®äŸããããŸãã
èªåã§èŠãŠãã ãããããããäžèšã®ãã¹ãŠãèæ ®ããŠãSwiftãšObjCã®äºææ§ãè©äŸ¡ãããšãã¯ããã»ãŒå®å šããšããèšèã䜿ããŸãã
䟿å©ãã«ã€ããŠ
Objective-Cã¯ããŸã奜ãã§ã¯ãããŸããã ãããŠãç§ã¯ã»ãšãã©æ¬åœã«Swiftã奜ãã§ãã Apple Swiftã®ããŒã ããŒãžã«ãããšããã®èšèªã¯é©æ°çã§ã¢ãã³ã§ãã ç§ã¯ããã«ã€ããŠè°è«ããŸããããç§ã®æ°æã¡ã«ãããšãããã¯ãŸã çã¿ãªãã§äœ¿çšã§ããã»ã©ã«ã¯æé·ããŠããŸããã ããã€ãã®æ¬ ç¹ã¯ãèšèªã«æ £ãããšããã«æããã«ãªããŸãããããã€ãã¯éåžžã«æçœã§ã¯ãããŸããã çŸåšãå¹²æžããŠãããã¹ãŠã®ãã®ããªã¹ãããŸãããå°æ¥ä¿®æ£ãããããšãé¡ã£ãŠããŸãã
[ 1.2ã§å»æ¢äºå® ]
1ã€ç®ã¯ãããã°ã®é£ããã§ãã ObjCã®èŸæžãšé åã¯ãããã¬ãŒããã«ã§çŽæ¥éããŠè¡šç€ºã§ããŸãããæšæºã®è¿ éãªã¯ã©ã¹ã¯éããŠè¡šç€ºã§ããŸããã ãããã¬ãŒã¯ãã®ã¿ã€ãã®ã¿ã衚瀺ããŸãã å ã»ã©èšã£ãããã«ãããã¯æšæºã¯ã©ã¹ã«é©çšãããŸããNSDictionaryãŸãã¯NSArrayã䜿çšããå Žåã以åãšåæ§ã«æ¡åŒµãããŸãïŒç解ã§ãããFoundationã¯ObjCäžã«ãããŸãïŒã ãŸãã¯ãNSLogã䜿çšããããšãã§ããŸãããããã¯æããã«ããŸã䟿å©ã§ã¯ãããŸããã
ãªãã·ã§ã³å€æ°ã䜿çšããåæ§ã®ç¶æ³ã ã¿ã€ããäœã§ããããããã¬ãŒã§ã¯ãã®å€æ°ãŸãã¯ãã®äžéšã®ã¿ã衚瀺ãããä»ã®å€æ°ã¯ååŸãããŸããã
1.2ã§ä¿®æ£ãããŸããã ããã€ãã®ã¯ã©ã¹ãšè¿ éãªã¯ã©ã¹ã®äž¡æ¹ã衚瀺ã§ããããã«ãªããŸããã
ãã®ç¶æ³ãã©ãåŒã¶ãããããŸãããã次ã®ããšãèµ·ãããŸããXcodeã§è¿ éãªã³ãŒããåæãããšãäœããå£ãããšããšã©ãŒãçºçããæ§æã®åŒ·èª¿è¡šç€ºããã¹ãŠæ¶ããŸãã ãã®åŸããã®äœããæããã«åèµ·åããããã¯ã©ã€ããåã³è¡šç€ºããããªãŒãã³ã³ããªãŒããåã³åäœããŸãã ãã ãããããã®ã¯ã©ãã·ã¥ã¯ãã³ãŒããã³ã³ãã€ã«ãããŠããªããšãïŒããšãã°ããã©ã±ãããéããŠãããšããªã©ïŒã«çºçããå€æ°ãŸãã¯é¢æ°ã®ååããŸã å®äºããŠããªãå ŽåããããŸãã Xcodeãã¯ã©ãã·ã¥ããããšã¯ãããŸããããããã§ãè¯ãã®ã§ãããããã§ããã¹ãŠãéåžžã«è€éã«èŠããããã§ã¯ãããŸããã
æååã¯ãæšæºã®è¿ éãªèšèªã¯ã©ã¹ã§ãã NSStringãžã®èªåããªããžããããŸãã ãã ããé·ãã«ã¯æ©èœããããŸããã ããã«ã¯çç±ãããããšã¯ç¥ã£ãŠããŸãããäºå®ã¯æ®ã£ãŠããŸããSwiftã§ã¯ãæååã®é·ããããé£ãããããããªåçŽãªæ©èœã§ãã
ãªãã·ã§ã³
ã°ããŒãã«é¢æ°ã«ãŠã³ãïŒããæè¿ãŸã§ãcountElementsïŒã ãªã³ã©ã€ã³ããã¥ã¢ã«ã«ã¯èšèŒãããŠããŸããïŒããã«ã€ããŠã¯åŸã§èª¬æããŸãïŒãã誰ããããªãã«ãããäŒããããšãã§ããŸãã ã«ãŠã³ãïŒæååïŒ
é¢æ°.utf16Countã ããã¯ãé¢æ°.lengthã䜿çšããŠå®è¡ãããããšãè¡ãã ãã§ãååã¯ã»ãšãã©çŽæçã§ãã äŸïŒstring.utf16Count
1.2ã«åé€ãããŸããã Xcodeã¯ãcountïŒstring.utf16ïŒã«çœ®ãæããããšãææ¡ããŠããŸãã
endIndex-æåŸã®æåã®ã€ã³ããã¯ã¹ã ããããããã¯String.Indexã®äžçš®ã§ãããIntãååŸããã«ã¯èŠããå¿ èŠããããŸãã string.endIndex
NSStringã«ãã£ã¹ããã.lengthïŒïŒNSStringãšããŠã®æååïŒ.lengthã䜿çšããŸã
é¢æ°.utf16Countã ããã¯ãé¢æ°.lengthã䜿çšããŠå®è¡ãããããšãè¡ãã ãã§ãååã¯ã»ãšãã©çŽæçã§ãã äŸïŒstring.utf16Count
1.2ã«åé€ãããŸããã Xcodeã¯ãcountïŒstring.utf16ïŒã«çœ®ãæããããšãææ¡ããŠããŸãã
endIndex-æåŸã®æåã®ã€ã³ããã¯ã¹ã ããããããã¯String.Indexã®äžçš®ã§ãããIntãååŸããã«ã¯èŠããå¿ èŠããããŸãã string.endIndex
NSStringã«ãã£ã¹ããã.lengthïŒïŒNSStringãšããŠã®æååïŒ.lengthã䜿çšããŸã
éåžžã«ç¹æ®ãªã±ãŒã¹ã æåŸã®ãã©ã¡ãŒã¿ãŒãšããŠã®objc_setAssociatedObjectã¯ãtypeãã©ã¡ãŒã¿ãŒ-typealias objc_AssociationPolicy = UIntãåãå ¥ããŸãã å€æ°ã¯ããã®ããªã·ãŒãå®çŸ©ããåã®é£ã«å®çŸ©ãããŸãïŒOBJC_ASSOCIATION_ASSIGNãOBJC_ASSOCIATION_RETAINãOBJC_ASSOCIATION_COPYãªã©ããããã¯Intåã§ãã ãªãã§ïŒ æ瀺çã«åŒçšããŠ2åé·ãæžãå¿ èŠãããã®ã¯ãªãã§ããïŒobjc_AssociationPolicyïŒOBJC_ASSOCIATION_COPYïŒãæžã蟌ã¿ãŸããïŒ èª°ãã説æããããšãé¡ã£ãŠããŸãïŒã³ã¡ã³ãïŒïŒïŒ
å€åæ§ã«ã€ããŠ
Swift-æ°ããèšèªã¯ãçºè¡šã®ç¬éããã§ãããäžå¹Žãçµã£ãŠããŸããã ããã¯ç©æ¥µçã«çºå±ããŠãããåã°ãããåŸããå€åãã€ã€ãããå°ãèããããããŸãã ãŸããå€æŽã«ãã£ãŠããã°ã©ãã³ã°ã¹ã¿ã€ã«ãå€§å¹ ã«å€æŽãããå ŽåããããŸããããšãã°ã以åã¯å®£èšæã«å®æ°ãããã«å²ãåœãŠãå¿ èŠããããããŒãžã§ã³1.2以éã§ã¯å¯èœã«ãªããŸããã ãã®ä»ã¯åãªãæ§æã®å€æŽã§ãïŒcountElements-> countïŒã æåéãããã®ããã¹ããæžããŠããéã«XcodeãæŽæ°ãïŒããŒãžã§ã³6.3ã¯2015幎4æ8æ¥ã«ãªãªãŒã¹ãããæ°ããããŒãžã§ã³ã®swift 1.2ãå«ãŸããŠããããšãæãåºããŸãïŒããããžã§ã¯ãã¯ã³ã³ãã€ã«ãããŸããã ã»ãšãã©ãã¹ãŠãïŒã«çœ®ãæãããããªã¯ãšã¹ããšããŠãããã¯æ°ããããŒãžã§ã³ã®å€æŽã®èª¬æããããããŸãã ãããŠãããã«éèªæã®å€æŽããããŸãïŒäœããã®çç±ã§NSDictionaryã¯ãNSStringããStringãNSSet-> SetãNSArray-> [AnyObject]ã®ããã«ã[NSObjectïŒAnyObject]ã«èªåçã«å€æãããŸãããåäœããŸãã 以åã¯ããã§ããã ãããŠä»ãããã ããã«ã¯ããããååãªçç±ããããŸãããç§ã¯ä»ããããã«ã€ããŠã¯è©±ããŠããŸããã ãšããã§ãéå²ãåœãŠã¯ãæ瀺çãªãã£ã¹ããªãã§ãæ©èœããŸãã
Xcodeã«ã¯ãswiftã®æ°ããããŒãžã§ã³ã«ç§»è¡ããæ©èœããããŸãã ç§ã®çµéšã§ã¯ãæ®å¿µãªãããæŽæ°ã¯æ£åžžã«æ©èœããŸããã æ°ããããŒãžã§ã³ã®ãã¹ãŠã®äžæŽåã¯ã3åç®ã®æäœåŸã«ã®ã¿åé€ãããŸããïŒä»¥åã¯æ©èœããŸãããããã¹ãŠãåé€ãããããã§ã¯ãããŸããïŒããçµæãšããŠã³ãŒãã¯ã³ã³ãã€ã«ãããŸããã§ããã 1ã€ã®å Žæã§ã¯ãutf16Counté¢æ°ã¯ä¿®æ£ãããªããŸãŸã§ããããæåã®å€æã®åã«ãXcodeã¯èªå眮æãæäŸããŸããããããã¯æåã§çœ®ãæããå¿ èŠããããŸããã ã€ãŸãã眮æã®äžéšã®ã¿ãäœæãããã³ã«å€æã3åè¡ãå¿ èŠãããã1ãæã§ã³ãŒããæåã§ç·šéããããšãã§ããŸããã 倧èŠæš¡ãªãããžã§ã¯ãã§ã®äžäŸ¿ããæ³åããã®ã¯æãã§ãã ãã®ãããªç¶æ³ãæããŠããããžã§ã¯ããå®äºããåã«XcodeãæŽæ°ããããããŸããã§ããããæŽæ°ããã°ã©ã ã¯æ¢ã«æ£åŒã«ãªãªãŒã¹ãããŠããŸãã æŽæ°ããããã®ãããªç¶æ³ã以äžã«ç€ºããŸãã
ãããŠãããã¥ã¡ã³ãåãããŠããªãã°ããŒãã«é¢æ°ã«ã€ããŠç°¡åã«èšåããŸããããã¯ãç§ã®æèŠã§ã¯ãèšèªã®è¥ãã®è¡šãã§ããããŸããcountElementsãdropFirstãdropLastãfirstãlastãprefixãsuffixãreverseã éã³å Žã«è¡ã£ãŠãè©ŠããŠã¿ãŠãã ããã
ãããã«
ãããã°ã¯ãã§ã«å®äºããŠãããNSDecimalãç»å ŽããŠããŸãã ããã¯ä¿®æ£ãããæ¬ ç¹ã«ãããã®ã§ãããå€æŽãªã¹ã1.2ã«ã¯ãã¡ããä»ã®æ¹åç¹ããããŸãã èšèªã«é¢ããäœæ¥ãåŒãç¶ã掻çºã«è¡ãããŠããããšãããããŸãã ãããŠãæéãçµã€ã«ã€ããŠãä»ã®æ¬ ç¹ãä¿®æ£ãããããããè¿œå ãããããšã¯ééããããŸããã ãããããããããããããŸãã Foundationãæžãæãã人ã¯ããŸãããObjCã¯ã©ãã«ãè¡ããŸããã ãããŸã§ã¯ããã¹ãŠã®ããŒã¹ã©ã€ãã©ãªã¯ObjCã§èšè¿°ãããŠããŸãããObjCãšããåãããå¿ èŠããããããèšèšãããã¹ã¿ã€ã«ã§Swiftãèšè¿°ããããšã¯ã§ããŸããã ãŸããç§ã¯ãã€ãè¿ éã«ç¹å¥ã«äœæãããæ°ãããã¬ãŒã ã¯ãŒã¯ãèŠãããšæã£ãŠããŸãã ããã¯çŽ æŽãããããã«èãããŸãããAppleãå®å šã«è¿ éã«åãæ¿ããããšãèšç»ããŠããå Žåãé ããæ©ããèµ·ãããšä¿¡ããŠããŸãã çµå±ãCore FoundationããããFoundationããããŸãã
ãã£ã¹ã«ãã·ã§ã³ã«æåŸ ããŸãã