質問: UINavigationController(rootViewController: newMessageController) presentViewController(navController, animated: true, completion: nil) }
回答: > > 自分自身を代入している? > > > selfはnewMessageControllerではないです。 selfはそのクラス自身のインスタンスです。おおざっぱですがインスタンスってのは実体化された時の住所情報だと思ってください。たとえば、質問のfunc handleNewMessage()がMyClassというクラスで定義されていれば、selfはMyClassのインスタンスになります。 > > どういう時に使うのでしょうか? > > > 自身で定義したメソッドをよそのクラスのインスタンスから実行して欲しい時などです。 xxxxx.delegate = self なんてコードをよく見かけると思いますが、これはちゃんと自身にアクセスしてもらえるようにと別クラスのインスタンスに住所を教えてあげているんですね。ここで詳細は書きませんが、UIKitの多くにデリゲートというデザインパターンが採用されています。たとえば、UITableViewはテーブルの見た目を提供してくれますが、中身のデータなどは自分でなんとかしないといけませんよね。こんなときデータの中身に関する処理をViewControllerクラスで用意しておいて、UITableViewのインスタンスからこの処理(メソッド)を実行してもらえばOKなわけですが、そのためにはViewControllerのインスタンス(住所)をUITableViewのインスタンスが知っている必要があります。そのための xxxxx.delegate = self です。 言葉で説明するのは難しい。。。