swift学習2日目Using Swift with Cocoa and Objective-C--相互運用性-ObjC APIと相互作用
1933 ワード
今日からswiftとoc,cocoa,フレームワークのインタラクション,すなわち既存のOCの構文で以前のcocoaの中のクラスとフレームワークを呼び出す方法を試みます.これは不思議に見えますが、根本的には2つの文法なので、実践こそ真理なので、コードの中で直接試してみましょう.
初期化(Initialization)
Swiftを使用してObjective-CのClassをインスタンス化するには、Swift構文を使用して初期化器を呼び出す必要があります.Objective-CのinitメソッドがSwiftに変化すると、それらはSwift初期化構文で提示される.「init」接頭辞は、この方法が初期化方法であることを示すキーワードとして切断される.「initWith」で始まるinitメソッドでは、「With」も除去されます.「init」または「initWith」から分離されたこのメソッド名の頭文字は小文字になり、最初のパラメータのパラメータ名とされる.残りのメソッド名は、パラメータ名に順次変更されます.これらのメソッド名は、カッコで呼び出されます.
例えば、Objective-Cを使用する場合は、次のようにします.
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swiftでは、次のようにします.
let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)
アクセス属性(Accessing Properties)
SwiftでObjective-Cオブジェクトのプロパティにアクセスして設定する場合は、ポイント構文を使用します
///Swift
myTextField.textColor = UIColor.darkGrayColor()
myTextField.text = "Hello world"
if myTextField.editing {
myTextField.editing = false
}
gettingまたはsettingプロパティの場合は、カッコを付ける必要がなく、プロパティ名を直接使用します.なお、darkGrayColorの後ろには、darkGrayColorがUIcolorのクラスメソッドであり、属性ではないため、カッコが付いています.Objective-Cでは、戻り値のある無パラメータメソッドを暗黙的アクセス関数(implicit getter)として使用し、アクセスと同様のメソッドで呼び出すことができる.しかしSwiftではそうすることはできません.Objective-Cの@property構文で記述された属性のみが属性として導入されます.詳しくはご参照ください
Working with Methods.
使用方法(Working with Methods)
SwiftでObjective-Cメソッドを呼び出す場合、ポイント構文を使用します.Objective-CメソッドがSwiftに変換されると、Objective-Cのselectorの最初の部分は基本メソッド名となり、カッコの前に表示されますが、最初のパラメータはカッコに直接表示され、パラメータ名はありません.残りのパラメータ名とパラメータはカッコに1対ずつ入力されます.
例えば、Objective-Cを使用する場合は、次のようにします.
//Objective-C
[myTableView insertSubview:mySubview atIndex:2];
Swiftでは、次のようにします.
//Swift
myTableView.insertSubview(mySubview, atIndex: 2)
パラメータなしメソッドを呼び出す場合は、メソッド名の後ろにカッコを付ける必要があります.
//Swift
myTableView.layoutIfNeeded()
初期化(Initialization)
Swiftを使用してObjective-CのClassをインスタンス化するには、Swift構文を使用して初期化器を呼び出す必要があります.Objective-CのinitメソッドがSwiftに変化すると、それらはSwift初期化構文で提示される.「init」接頭辞は、この方法が初期化方法であることを示すキーワードとして切断される.「initWith」で始まるinitメソッドでは、「With」も除去されます.「init」または「initWith」から分離されたこのメソッド名の頭文字は小文字になり、最初のパラメータのパラメータ名とされる.残りのメソッド名は、パラメータ名に順次変更されます.これらのメソッド名は、カッコで呼び出されます.
例えば、Objective-Cを使用する場合は、次のようにします.
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swiftでは、次のようにします.
let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)
アクセス属性(Accessing Properties)
SwiftでObjective-Cオブジェクトのプロパティにアクセスして設定する場合は、ポイント構文を使用します
///Swift
myTextField.textColor = UIColor.darkGrayColor()
myTextField.text = "Hello world"
if myTextField.editing {
myTextField.editing = false
}
gettingまたはsettingプロパティの場合は、カッコを付ける必要がなく、プロパティ名を直接使用します.なお、darkGrayColorの後ろには、darkGrayColorがUIcolorのクラスメソッドであり、属性ではないため、カッコが付いています.Objective-Cでは、戻り値のある無パラメータメソッドを暗黙的アクセス関数(implicit getter)として使用し、アクセスと同様のメソッドで呼び出すことができる.しかしSwiftではそうすることはできません.Objective-Cの@property構文で記述された属性のみが属性として導入されます.詳しくはご参照ください
Working with Methods.
使用方法(Working with Methods)
SwiftでObjective-Cメソッドを呼び出す場合、ポイント構文を使用します.Objective-CメソッドがSwiftに変換されると、Objective-Cのselectorの最初の部分は基本メソッド名となり、カッコの前に表示されますが、最初のパラメータはカッコに直接表示され、パラメータ名はありません.残りのパラメータ名とパラメータはカッコに1対ずつ入力されます.
例えば、Objective-Cを使用する場合は、次のようにします.
//Objective-C
[myTableView insertSubview:mySubview atIndex:2];
Swiftでは、次のようにします.
//Swift
myTableView.insertSubview(mySubview, atIndex: 2)
パラメータなしメソッドを呼び出す場合は、メソッド名の後ろにカッコを付ける必要があります.
//Swift
myTableView.layoutIfNeeded()