文書   >   Swift   >  Cocoa Design Patterns   >   Using Delegates to Customize Object Behavior
記事
Using Delegates to Customize Object Behavior
(カスタム化されたオブジェクトの動作にデリゲートを使用する)
委任者に代わってイベントに応答します。
概観
デリゲートを使用して、アプリ内のイベントをあなたに通知する Cocoa オブジェクトと対話します。
デリゲートプロトコルを採用する
Cocoa API は、しばしばデリゲートメソッドを含むプロトコルを提供します。ユーザーがウィンドウのサイズを変更するなどのイベントが発生すると、委任者であるクラスがイベントを検出し、デリゲートとしてあなたが指定したクラスのデリゲートメソッドを呼び出します。デリゲートメソッドは、アプリがイベントに応答する方法をカスタマイズできます。
以下の例では、NSWindowDelegate プロトコルを採用し、window(_:willUseFullScreenContentSize:) メソッドを実装しています。
class MyDelegate: NSObject, NSWindowDelegate {
func window(_ window: NSWindow, willUseFullScreenContentSize proposedSize: NSSize) -> NSSize {
return proposedSize
}
}
デリゲートが存在することを確認
Cocoa のデリゲートパターンでは、デリゲートをインスタンス化する必要はありません。イベントに応答する必要がない場合は、デリゲートを作成する必要はありません。オブジェクトのデリゲートでメソッドを呼び出す前に、デリゲートが nil でないことを確認してください。
以下の例では、NSWindow を作成し、optional の連鎖を使用して、ウィンドウのデリゲートが存在することを確認してから、メッセージをデリゲートに送信します。
let myWindow = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 5120, height: 2880),
styleMask: .fullScreen,
backing: .buffered,
defer: false
)
myWindow.delegate = MyDelegate()
if let fullScreenSize = myWindow.delegate?.window(myWindow, willUseFullScreenContentSize: mySize) {
print(NSStringFromSize(fullScreenSize))
}
以下も見よ
共通のパターン
- Using Key-Value Observing in Swift
(Swift でキー値監視を使用する) - Managing a Shared Resource Using a Singleton
(シングルトンを使用して共有リソースの管理) - About Imported Cocoa Error Parameters
(インポートされた Cocoa のエラーパラメータについて) - Handling Cocoa Errors in Swift
(Swift での Cocoa のエラーの処理)
他のオブジェクトのプロパティの変更についてオブジェクトに通知します。
単一の、共有化されたクラスインスタンスを使用して、共有リソースへのアクセスを提供します。
Cocoa のエラーパラメータが Swift の throw するメソッドにどのように変換されるかを学びます。
Cocoa のエラーの型を使用するエラーを throw してキャッチします。
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)