標籤:style blog http color 使用 os
Swift與Objective-C混用簡明教程
轉載自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc
我想很多iOS開發人員在知道Swift後,心中最大的問題就是如何將Swift應用到原有項目之中。下面我將簡要介紹這2種語言的混用方法,內容參考自官方文檔 Using Swift with Cocoa and Objective-C ,推薦大家閱讀。
在Swift中使用Objective-C類
在Xcode6中建立檔案(?+N),選擇Swift,然後系統框提示是否同時建立XXX-Bridging-Header.h檔案(XXX為你的項目名稱),確定。
這個自動建立出來的Bridging-Header.h檔案是溝通Swift世界和Objective-C世界的橋樑。任何需要在Swift檔案中使用的自訂Objective-C類,必需先引入此Header檔案。
假設項目名稱為TestSwift,其中存在Objective-C類Note(在Note.m中定義):
@interface Note : NSObject - (void)log; @end
想在Swift中引用這個類,首先需要在TestSwift-Bridging-Header.h檔案中import Note:
#import "Note.h"
然後在Swift代碼中就能使用Note了:
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() var a:Note = Note() a.log() } }
在Objective-C中使用Swift類
想在Objective-C檔案中引用Swift檔案中定義的類,需要在Objective-C檔案中引入一個特殊的標頭檔: XXX-Swift.h,假設項目名稱為 TestSwift,那麼這個需要引入的header檔案為TestSwift-Swift.h:
假設存在Book類(在Book.swift檔案中定義):
import Foundation class Book : NSObject { var title:String init() { self.title = "Default Book" } func log() { println(self.title) } }在需要引用Book類的Objective-C檔案中,先引入TestSwift-Swift.h標頭檔(此檔案不需要建立)
#import "TestSwift-Swift.h"
然後就能使用Book了:
Book *book = [Book new]; [book log];
最後再囉嗦一句,XXX-Swift.h檔案在項目中是不可見的(估計此檔案在編譯時間自動產生),在使用時只需遵循蘋果既定規則就OK了。