Ç¨ÒÆ¹¤×÷ÌṩÁËÒ»¸öÖØÐÂÉóÊÓÏÖÓÐ Objective-C Ó¦ÓóÌÐòµÄ»ú»á£¬²¢Í¨¹ý Ìæ»»²¿·ÖSwift ´úÂëÀ´¸üºÃµÄÓÅ»¯Ó¦ÓóÌÐòµÄ¼Ü¹¹£¬Âß¼ÒÔ¼°ÐÔÄÜ¡£»»¾ä»°Ëµ£¬ËùνÔöÁ¿appÇ¨ÒÆ£¬¾ÍÊÇÈÃÄãʹÓÃ֮ǰµÄ¹¤¾ß-mix and match À´ÌáÉýÏ໥֮¼äµÄ¿É²Ù×÷ÐÔ¡£µ±ÒªÑ¡ÔñÄÄÐ©ÌØÐԺ͹¦ÄÜÀ´Óà Swift£¬ÄÄЩÒÀÈ»Óà Objective-C ʵÏÖʱ£¬Mix-and-matchÈÃÕâÒ»ÇбäµÃ¼òµ¥¡£Swift ºÍ Objective-C µÄ»¥ÓÃÐÔÓÖʹµÃ½«ÕâЩ¹¦Äܼ¯³Éµ½ Objective-C ±äµÃ²¢²»À§ÄÑ¡£Í¨¹ýÕâЩ¹¤¾ß¿ÉÒÔ¿ª·Å Swift µÄÀ©Õ¹¹¦Äܲ¢¼¯³Éµ½ÏÖÓÐµÄ Objective-C ÏîÄ¿ÖжøÍêÈ«²»±ØÁ¢¿ÌʹÓà Swift ÖØÐ´Õû¸öÏîÄ¿¡£
ΪÄãµÄObjective-C´úÂë×öºÃÇ¨ÒÆ×¼±¸
ÔÚ ¿ªÊ¼Ç¨ÒÆÄãµÄ´úÂë֮ǰ£¬ÇëÈ·±£ÄãµÄ Objective-C ºÍ Swift ´úÂë¼äÓÐ×Å×î¼Ñ¼æÈÝÐÔ¡£ÕâÒâζ×ÅÕûÀí²¢Ê¹Óà Objective-C µÄÏÖ´ú»¯ÌØÐÔÀ´ÓÅ»¯ÄãµÄÏÖÓÐÏîÄ¿¡£ÎªÁËºÍ Swift ½øÐиüÈÝÒ×µÄÎÞ·ì½»»¥£¬ÄãµÄÏÖÓдúÂëÐèÒª×ñÑÏÖ´ú±àÂëʵ¼ù¡£ÔÚ¿ªÊ¼Ç°£¬Óиö¼ò¶ÌµÄÊÊÅäÁ·Ï°ÁÐ±í£¬²Î¿´Adopting Mordern Objective-C¡£
Ç¨ÒÆ¹ý³Ì
×î ÓÐÐ§Ç¨ÒÆ´úÂëµÄ·½Ê½ÊÇ»ùÓÚÖð¸öÎļþ£¬¼´Ò»´ÎÍê³ÉÒ»¸öÀà¡£ÓÉÓÚÄã²»ÄÜÔÚ Objective-C Öм̳РSwiftÀ࣬ ×îºÃÑ¡ÔñÒ»¸öûÓÐ×ÓÀàµÄ¡£Äã¾Í¿ÉÒÔÓõ¥¸ö.swiftÎļþÀ´´úÌæ¶Ô Ó¦µÄ.mºÍ.hÎļþÁË¡£ÄãËùÓеÄʵÏÖ´úÂëºÍ½Ó¿Ú½«Ö±½Ó·Å½øµ¥¸ö Swift Îļþ¡£Äã²»ÓÃÔÙ´´½¨Í·ÎļþÁË£»Xcode »áÔÚÄãÐèÒªÒýÓõÄʱºò×Ô¶¯Éú³ÉÍ·Îļþ¡£
×¼±¸¹¤×÷
- ÔÚ Xcode ÖÐ:File>New>File>(iOS »òÕß OS X) > Other > Swift Ϊ¶ÔÓ¦µÄ Objective-C.m ºÍ.hÎļþ´´½¨Ò»¸ö Swift Àà¡£
- µ¼ÈëÏà¹ØÏµÍ³¿ò¼Ü¡£
- Èç¹ûÄãÏ£ÍûÔÚ Swift ÎļþÖзÃÎÊ Objective-C ´úÂëµÄ»°£¬¿ÉÒÔÌîÈëÒ»¸ö Objective-C ÇŽÓÍ·¡£¾ßÌåµÄ²Ù×÷²½Ö裬Çë¿´ Importing Code from Within the Same App Target¡£
- Ϊ ʹÄãµÄ Swift ÀàÄÜÔÚ Objective-C ÖзÃÎÊʹÓ㬿ÉÒԼ̳РObjective-C À࣬»òÕß±ê¼ÇÉÏ@objcÊôÐÔ¡£ÎªÀàÖ¸¶¨ÌØÊâµÄÃû³Æ£¬ÒÔÔÚ Objective-C ÖÐʹÓ㬱ê¼ÇÉÏ@objc(#name#), <#name#>¾ÍÊÇÔÚ Objective-C ÖÐÒýÓÃµÄ Swift ÀàÃû¡£ ¸ü¶àÐÅÏ¢£¬Çë¿´Swift Type Compatibility¡£
¿ªÊ¼¹¤×÷
- Äã¿ÉÒÔͨ¹ý¼Ì³Ð Objective-C À࣬ÊÊÅä Objective-C ÐÒ飬»òÕ߸ü¶àµÄ·½Ê½£¬À´Èà Swift À༯³É Objective-C ÐÐΪ¡£¸ü¶àÐÅÏ¢£¬Çë¿´Writing Swift Classes with Objective-C Behavior
- µ±ÄãʹÓà Objective-C APIs µÄʱºò£¬ÄãÐèÒªÖªµÀ Swift ÊÇÔõÑùÀ´·ÒëijЩ Objective-C ÌØÐԵġ£¸ü¶àÐÅÏ¢£¬Çë¿´Interacting with Objective-C APIs
- µ±Óà Swift ±àдÓõ½ Cocoa ¿ò¼ÜµÄ´úÂëʱ£¬¼ÇסijЩÀàÐÍÊDZ»ÇŽӵģ¬Òâζ×ÅÄã¿ÉÒÔʹÓÃijЩ Swift ÀàÐÍÀ´Ìæ´ú Objective-C ÀàÐÍ¡£¸ü¶àÐÅÏ¢£¬Çë¿´Working with Cocoa Data Types
- µ±ÄãÔÚ Swift ÖÐÔËÓà CocoaÉè¼ÆÄ£Ê½µÃʱºò£¬Çë¿´ Adopting Cocoa Design Patterns»ñÈ¡¸ü¶àµÄͨÓÃÉè¼ÆÄ£Ê½µÄת»»ÐÅÏ¢¡£
- ¶ÔÓÚ´òË㽫ÏîÄ¿´Ó Objective-C ת»»µ½ Swfit µÄÈË£¬Çë¿´ Properties¡£
- ÔÚ±ØÒªµÄʱºò£¬ÇëΪ Swift µÄÊôÐÔ»ò·½·¨£¬Í¨¹ý@objc(<#name#>)ÊôÐÔÀ´Ìṩ Objective-C Ãû³Æ£¬¾ÍÏñÕâÑù£º
1
2
3
4
5 |
var enabled: Bool {
@objc(isEnabled) get {
/* ... */
}
} |
·Ö±ðÓÃfuncºÍclass funcÀ´±íʾ instance(-) ºÍ class(+) ·½·¨¡£
ÉùÃ÷¼òµ¥µÄºêÀ´×÷Ϊ³£Á¿£¬½«¸´Ôӵĺêת»»Îªº¯Êý¡£
´ó¹¦¸æ³É
- ÔÚÄãµÄ Objective-C ´úÂëÖиüРimport Óï¾äΪ #import "Ä£¿éÃû-Swift.h"£¬¿É²ÎÔÄImporting Code from Within the Same App TargetÖÐÔøÓÐÌáµ½¡£
- ÔÚTarget µÄ³ÉԱѡÔñ¿òÖÐÈ¥µô¹´Ñ¡¿òÀ´ÒƳýÔʼµÄ Objective-C.mÎļþ.²»ÒªÁ¢¿Ìɾ³ý.mºÍ.hÎļþ£¬ÒÔ±¸½â¾öÎÊÌâÓá£
- Èç¹ûÄã¸ø Swift ÀàÆðÁËÒ»¸ö²»Í¬µÄÃû×Ö£¬ÇëʹÓà Swift ÀàÃû´úÌæ Objective-C Ãû¡£
ÎÊÌâ½â¾öÌáʾ
¾¡¹Ü¶ÔÓÚ²»Í¬µÄÏîÄ¿£¬Ç¨ÒƵľÀúÊDz»¾¡ÏàͬµÄ£¬ÎÞÂÛÔõÑù£¬¶¼ÓÐһЩͨÓõIJ½ÖèºÍ¹¤¾ßÄܰïÄã½â¾ö´úÂëÇ¨ÒÆÊ±Åöµ½µÄÎÊÌ⣺
- ¼Çס£ºÄã²»ÄÜÔÚ Objective-C Öм̳РSwift Àà¡£Òò´Ë£¬±»ÄãÇ¨ÒÆµÄÀ಻ÄÜÓÐÈÎºÎµÄ Objective-C ×ÓÀà´æÔÚÓÚÄãµÄÓ¦ÓÃÖС£
- µ±ÄãÇ¨ÒÆÒ»¸öÀൽ Swift µÄʱºò£¬Äã±ØÐë´Ó target ÖÐÒÆ³ýÏà¹ØµÄ.mÎļþ£¬ÒÔ±ÜÃâ±àÒëʱÌáʾ³öÏÖÖØ¸´µÄ·ûºÅµÈ±àÒë´íÎó¡£
- ΪÁËÔÚ Objective-C ÖпÉÒÔ·ÃÎʲ¢Ê¹Óã¬Swift Àà±ØÐëÊÇÒ»¸ö Objective-C ÀàµÄ×ÓÀ࣬»òÕß±»±ê¼ÇΪ@objc¡£
- µ±ÄãÔÚ Objective-C ÖÐʹÓà Swift ´úÂëµÄʱºò£¬¼Çס Objective-C ²»ÄÜÀí½âÄÇЩ Swift µÄÄ³Ð©ÌØÐÔ£¬Çë¿´Using Swift from Objective-C
- ¿ÉÒÔͨ¹ýCommond + µ¥»÷Ò»¸ö Swift ÀàÃûÀ´²é¿´ËüÉú³ÉµÄÍ·Îļþ¡£
- ¿ÉÒÔͨ¹ýOption + µ¥»÷Ò»¸ö·ûºÅÀ´²é¿´¸üÏêϸµÄÐÅÏ¢£¬±ÈÈçËüµÄÀàÐÍ£¬ÊôÐÔÒÔ¼°Îĵµ×¢Ê͵ȡ£
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍiosÅàѵѧԺËùÓУ¬»¶Ó×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍiosÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/ios/